/* automatically generated by JSCoverage - do not edit */
try {
  if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
    // this is a browser window that was opened from another window

    if (! top.opener._$jscoverage) {
      top.opener._$jscoverage = {};
    }
  }
}
catch (e) {}

try {
  if (typeof top === 'object' && top !== null) {
    // this is a browser window

    try {
      if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
        top._$jscoverage = top.opener._$jscoverage;
      }
    }
    catch (e) {}

    if (! top._$jscoverage) {
      top._$jscoverage = {};
    }
  }
}
catch (e) {}

try {
  if (typeof top === 'object' && top !== null && top._$jscoverage) {
    this._$jscoverage = top._$jscoverage;
  }
}
catch (e) {}
if (! this._$jscoverage) {
  this._$jscoverage = {};
}
if (! _$jscoverage['build/event/event.js']) {
  _$jscoverage['build/event/event.js'] = [];
  _$jscoverage['build/event/event.js'][31] = 0;
  _$jscoverage['build/event/event.js'][38] = 0;
  _$jscoverage['build/event/event.js'][45] = 0;
  _$jscoverage['build/event/event.js'][53] = 0;
  _$jscoverage['build/event/event.js'][64] = 0;
  _$jscoverage['build/event/event.js'][72] = 0;
  _$jscoverage['build/event/event.js'][80] = 0;
  _$jscoverage['build/event/event.js'][104] = 0;
  _$jscoverage['build/event/event.js'][111] = 0;
  _$jscoverage['build/event/event.js'][113] = 0;
  _$jscoverage['build/event/event.js'][116] = 0;
  _$jscoverage['build/event/event.js'][120] = 0;
  _$jscoverage['build/event/event.js'][137] = 0;
  _$jscoverage['build/event/event.js'][150] = 0;
  _$jscoverage['build/event/event.js'][161] = 0;
  _$jscoverage['build/event/event.js'][171] = 0;
  _$jscoverage['build/event/event.js'][173] = 0;
  _$jscoverage['build/event/event.js'][185] = 0;
  _$jscoverage['build/event/event.js'][186] = 0;
  _$jscoverage['build/event/event.js'][189] = 0;
  _$jscoverage['build/event/event.js'][190] = 0;
  _$jscoverage['build/event/event.js'][193] = 0;
  _$jscoverage['build/event/event.js'][195] = 0;
  _$jscoverage['build/event/event.js'][196] = 0;
  _$jscoverage['build/event/event.js'][198] = 0;
  _$jscoverage['build/event/event.js'][216] = 0;
  _$jscoverage['build/event/event.js'][217] = 0;
  _$jscoverage['build/event/event.js'][220] = 0;
  _$jscoverage['build/event/event.js'][221] = 0;
  _$jscoverage['build/event/event.js'][222] = 0;
  _$jscoverage['build/event/event.js'][223] = 0;
  _$jscoverage['build/event/event.js'][224] = 0;
  _$jscoverage['build/event/event.js'][225] = 0;
  _$jscoverage['build/event/event.js'][229] = 0;
  _$jscoverage['build/event/event.js'][250] = 0;
  _$jscoverage['build/event/event.js'][252] = 0;
  _$jscoverage['build/event/event.js'][256] = 0;
  _$jscoverage['build/event/event.js'][258] = 0;
  _$jscoverage['build/event/event.js'][259] = 0;
  _$jscoverage['build/event/event.js'][260] = 0;
  _$jscoverage['build/event/event.js'][262] = 0;
  _$jscoverage['build/event/event.js'][266] = 0;
  _$jscoverage['build/event/event.js'][268] = 0;
  _$jscoverage['build/event/event.js'][269] = 0;
  _$jscoverage['build/event/event.js'][272] = 0;
  _$jscoverage['build/event/event.js'][277] = 0;
  _$jscoverage['build/event/event.js'][279] = 0;
  _$jscoverage['build/event/event.js'][280] = 0;
  _$jscoverage['build/event/event.js'][281] = 0;
  _$jscoverage['build/event/event.js'][282] = 0;
  _$jscoverage['build/event/event.js'][285] = 0;
  _$jscoverage['build/event/event.js'][287] = 0;
  _$jscoverage['build/event/event.js'][288] = 0;
  _$jscoverage['build/event/event.js'][291] = 0;
  _$jscoverage['build/event/event.js'][296] = 0;
  _$jscoverage['build/event/event.js'][301] = 0;
  _$jscoverage['build/event/event.js'][304] = 0;
  _$jscoverage['build/event/event.js'][307] = 0;
  _$jscoverage['build/event/event.js'][309] = 0;
  _$jscoverage['build/event/event.js'][310] = 0;
  _$jscoverage['build/event/event.js'][313] = 0;
  _$jscoverage['build/event/event.js'][314] = 0;
  _$jscoverage['build/event/event.js'][316] = 0;
  _$jscoverage['build/event/event.js'][318] = 0;
  _$jscoverage['build/event/event.js'][319] = 0;
  _$jscoverage['build/event/event.js'][323] = 0;
  _$jscoverage['build/event/event.js'][324] = 0;
  _$jscoverage['build/event/event.js'][326] = 0;
  _$jscoverage['build/event/event.js'][327] = 0;
  _$jscoverage['build/event/event.js'][328] = 0;
  _$jscoverage['build/event/event.js'][333] = 0;
  _$jscoverage['build/event/event.js'][342] = 0;
  _$jscoverage['build/event/event.js'][343] = 0;
  _$jscoverage['build/event/event.js'][344] = 0;
  _$jscoverage['build/event/event.js'][347] = 0;
  _$jscoverage['build/event/event.js'][349] = 0;
  _$jscoverage['build/event/event.js'][357] = 0;
  _$jscoverage['build/event/event.js'][358] = 0;
  _$jscoverage['build/event/event.js'][359] = 0;
  _$jscoverage['build/event/event.js'][360] = 0;
  _$jscoverage['build/event/event.js'][364] = 0;
  _$jscoverage['build/event/event.js'][371] = 0;
  _$jscoverage['build/event/event.js'][388] = 0;
  _$jscoverage['build/event/event.js'][395] = 0;
  _$jscoverage['build/event/event.js'][403] = 0;
  _$jscoverage['build/event/event.js'][414] = 0;
  _$jscoverage['build/event/event.js'][426] = 0;
  _$jscoverage['build/event/event.js'][427] = 0;
  _$jscoverage['build/event/event.js'][428] = 0;
  _$jscoverage['build/event/event.js'][429] = 0;
  _$jscoverage['build/event/event.js'][431] = 0;
  _$jscoverage['build/event/event.js'][434] = 0;
  _$jscoverage['build/event/event.js'][447] = 0;
  _$jscoverage['build/event/event.js'][448] = 0;
  _$jscoverage['build/event/event.js'][449] = 0;
  _$jscoverage['build/event/event.js'][451] = 0;
  _$jscoverage['build/event/event.js'][458] = 0;
  _$jscoverage['build/event/event.js'][459] = 0;
  _$jscoverage['build/event/event.js'][477] = 0;
  _$jscoverage['build/event/event.js'][487] = 0;
  _$jscoverage['build/event/event.js'][496] = 0;
  _$jscoverage['build/event/event.js'][570] = 0;
  _$jscoverage['build/event/event.js'][771] = 0;
  _$jscoverage['build/event/event.js'][775] = 0;
  _$jscoverage['build/event/event.js'][805] = 0;
  _$jscoverage['build/event/event.js'][807] = 0;
  _$jscoverage['build/event/event.js'][808] = 0;
  _$jscoverage['build/event/event.js'][815] = 0;
  _$jscoverage['build/event/event.js'][817] = 0;
  _$jscoverage['build/event/event.js'][841] = 0;
  _$jscoverage['build/event/event.js'][878] = 0;
  _$jscoverage['build/event/event.js'][908] = 0;
  _$jscoverage['build/event/event.js'][909] = 0;
  _$jscoverage['build/event/event.js'][913] = 0;
  _$jscoverage['build/event/event.js'][914] = 0;
  _$jscoverage['build/event/event.js'][915] = 0;
  _$jscoverage['build/event/event.js'][916] = 0;
  _$jscoverage['build/event/event.js'][922] = 0;
  _$jscoverage['build/event/event.js'][924] = 0;
  _$jscoverage['build/event/event.js'][925] = 0;
  _$jscoverage['build/event/event.js'][933] = 0;
  _$jscoverage['build/event/event.js'][934] = 0;
  _$jscoverage['build/event/event.js'][937] = 0;
  _$jscoverage['build/event/event.js'][938] = 0;
  _$jscoverage['build/event/event.js'][941] = 0;
  _$jscoverage['build/event/event.js'][947] = 0;
  _$jscoverage['build/event/event.js'][948] = 0;
  _$jscoverage['build/event/event.js'][955] = 0;
  _$jscoverage['build/event/event.js'][956] = 0;
  _$jscoverage['build/event/event.js'][958] = 0;
  _$jscoverage['build/event/event.js'][965] = 0;
  _$jscoverage['build/event/event.js'][966] = 0;
  _$jscoverage['build/event/event.js'][967] = 0;
  _$jscoverage['build/event/event.js'][968] = 0;
  _$jscoverage['build/event/event.js'][970] = 0;
  _$jscoverage['build/event/event.js'][976] = 0;
  _$jscoverage['build/event/event.js'][977] = 0;
  _$jscoverage['build/event/event.js'][981] = 0;
  _$jscoverage['build/event/event.js'][982] = 0;
  _$jscoverage['build/event/event.js'][984] = 0;
  _$jscoverage['build/event/event.js'][986] = 0;
  _$jscoverage['build/event/event.js'][987] = 0;
  _$jscoverage['build/event/event.js'][991] = 0;
  _$jscoverage['build/event/event.js'][992] = 0;
  _$jscoverage['build/event/event.js'][993] = 0;
  _$jscoverage['build/event/event.js'][996] = 0;
  _$jscoverage['build/event/event.js'][1012] = 0;
  _$jscoverage['build/event/event.js'][1041] = 0;
  _$jscoverage['build/event/event.js'][1043] = 0;
  _$jscoverage['build/event/event.js'][1072] = 0;
  _$jscoverage['build/event/event.js'][1095] = 0;
  _$jscoverage['build/event/event.js'][1123] = 0;
  _$jscoverage['build/event/event.js'][1145] = 0;
  _$jscoverage['build/event/event.js'][1165] = 0;
  _$jscoverage['build/event/event.js'][1167] = 0;
  _$jscoverage['build/event/event.js'][1170] = 0;
  _$jscoverage['build/event/event.js'][1171] = 0;
  _$jscoverage['build/event/event.js'][1173] = 0;
  _$jscoverage['build/event/event.js'][1174] = 0;
  _$jscoverage['build/event/event.js'][1175] = 0;
  _$jscoverage['build/event/event.js'][1176] = 0;
  _$jscoverage['build/event/event.js'][1178] = 0;
  _$jscoverage['build/event/event.js'][1181] = 0;
  _$jscoverage['build/event/event.js'][1183] = 0;
  _$jscoverage['build/event/event.js'][1186] = 0;
  _$jscoverage['build/event/event.js'][1188] = 0;
  _$jscoverage['build/event/event.js'][1189] = 0;
  _$jscoverage['build/event/event.js'][1190] = 0;
  _$jscoverage['build/event/event.js'][1194] = 0;
  _$jscoverage['build/event/event.js'][1196] = 0;
  _$jscoverage['build/event/event.js'][1200] = 0;
  _$jscoverage['build/event/event.js'][1203] = 0;
  _$jscoverage['build/event/event.js'][1208] = 0;
  _$jscoverage['build/event/event.js'][1210] = 0;
  _$jscoverage['build/event/event.js'][1211] = 0;
  _$jscoverage['build/event/event.js'][1214] = 0;
  _$jscoverage['build/event/event.js'][1215] = 0;
  _$jscoverage['build/event/event.js'][1218] = 0;
  _$jscoverage['build/event/event.js'][1219] = 0;
  _$jscoverage['build/event/event.js'][1223] = 0;
  _$jscoverage['build/event/event.js'][1225] = 0;
  _$jscoverage['build/event/event.js'][1226] = 0;
  _$jscoverage['build/event/event.js'][1228] = 0;
  _$jscoverage['build/event/event.js'][1229] = 0;
  _$jscoverage['build/event/event.js'][1233] = 0;
  _$jscoverage['build/event/event.js'][1234] = 0;
  _$jscoverage['build/event/event.js'][1235] = 0;
  _$jscoverage['build/event/event.js'][1238] = 0;
  _$jscoverage['build/event/event.js'][1256] = 0;
  _$jscoverage['build/event/event.js'][1257] = 0;
  _$jscoverage['build/event/event.js'][1270] = 0;
  _$jscoverage['build/event/event.js'][1271] = 0;
  _$jscoverage['build/event/event.js'][1272] = 0;
  _$jscoverage['build/event/event.js'][1276] = 0;
  _$jscoverage['build/event/event.js'][1287] = 0;
  _$jscoverage['build/event/event.js'][1288] = 0;
  _$jscoverage['build/event/event.js'][1289] = 0;
  _$jscoverage['build/event/event.js'][1291] = 0;
  _$jscoverage['build/event/event.js'][1292] = 0;
  _$jscoverage['build/event/event.js'][1296] = 0;
  _$jscoverage['build/event/event.js'][1307] = 0;
  _$jscoverage['build/event/event.js'][1308] = 0;
  _$jscoverage['build/event/event.js'][1309] = 0;
  _$jscoverage['build/event/event.js'][1311] = 0;
  _$jscoverage['build/event/event.js'][1312] = 0;
  _$jscoverage['build/event/event.js'][1317] = 0;
  _$jscoverage['build/event/event.js'][1328] = 0;
  _$jscoverage['build/event/event.js'][1339] = 0;
  _$jscoverage['build/event/event.js'][1340] = 0;
  _$jscoverage['build/event/event.js'][1341] = 0;
  _$jscoverage['build/event/event.js'][1342] = 0;
  _$jscoverage['build/event/event.js'][1343] = 0;
  _$jscoverage['build/event/event.js'][1344] = 0;
  _$jscoverage['build/event/event.js'][1348] = 0;
  _$jscoverage['build/event/event.js'][1360] = 0;
  _$jscoverage['build/event/event.js'][1361] = 0;
  _$jscoverage['build/event/event.js'][1362] = 0;
  _$jscoverage['build/event/event.js'][1363] = 0;
  _$jscoverage['build/event/event.js'][1365] = 0;
  _$jscoverage['build/event/event.js'][1366] = 0;
  _$jscoverage['build/event/event.js'][1370] = 0;
  _$jscoverage['build/event/event.js'][1380] = 0;
  _$jscoverage['build/event/event.js'][1381] = 0;
  _$jscoverage['build/event/event.js'][1391] = 0;
  _$jscoverage['build/event/event.js'][1392] = 0;
  _$jscoverage['build/event/event.js'][1394] = 0;
  _$jscoverage['build/event/event.js'][1405] = 0;
  _$jscoverage['build/event/event.js'][1406] = 0;
  _$jscoverage['build/event/event.js'][1408] = 0;
  _$jscoverage['build/event/event.js'][1425] = 0;
  _$jscoverage['build/event/event.js'][1427] = 0;
  _$jscoverage['build/event/event.js'][1428] = 0;
  _$jscoverage['build/event/event.js'][1429] = 0;
  _$jscoverage['build/event/event.js'][1430] = 0;
  _$jscoverage['build/event/event.js'][1431] = 0;
  _$jscoverage['build/event/event.js'][1432] = 0;
  _$jscoverage['build/event/event.js'][1434] = 0;
  _$jscoverage['build/event/event.js'][1438] = 0;
  _$jscoverage['build/event/event.js'][1449] = 0;
  _$jscoverage['build/event/event.js'][1452] = 0;
  _$jscoverage['build/event/event.js'][1453] = 0;
  _$jscoverage['build/event/event.js'][1455] = 0;
  _$jscoverage['build/event/event.js'][1466] = 0;
  _$jscoverage['build/event/event.js'][1467] = 0;
  _$jscoverage['build/event/event.js'][1468] = 0;
  _$jscoverage['build/event/event.js'][1472] = 0;
  _$jscoverage['build/event/event.js'][1476] = 0;
  _$jscoverage['build/event/event.js'][1488] = 0;
  _$jscoverage['build/event/event.js'][1490] = 0;
  _$jscoverage['build/event/event.js'][1491] = 0;
  _$jscoverage['build/event/event.js'][1492] = 0;
  _$jscoverage['build/event/event.js'][1493] = 0;
  _$jscoverage['build/event/event.js'][1496] = 0;
  _$jscoverage['build/event/event.js'][1513] = 0;
  _$jscoverage['build/event/event.js'][1514] = 0;
  _$jscoverage['build/event/event.js'][1521] = 0;
  _$jscoverage['build/event/event.js'][1545] = 0;
  _$jscoverage['build/event/event.js'][1571] = 0;
  _$jscoverage['build/event/event.js'][1572] = 0;
  _$jscoverage['build/event/event.js'][1573] = 0;
  _$jscoverage['build/event/event.js'][1576] = 0;
  _$jscoverage['build/event/event.js'][1582] = 0;
  _$jscoverage['build/event/event.js'][1595] = 0;
  _$jscoverage['build/event/event.js'][1596] = 0;
  _$jscoverage['build/event/event.js'][1597] = 0;
  _$jscoverage['build/event/event.js'][1600] = 0;
  _$jscoverage['build/event/event.js'][1603] = 0;
  _$jscoverage['build/event/event.js'][1617] = 0;
  _$jscoverage['build/event/event.js'][1618] = 0;
  _$jscoverage['build/event/event.js'][1619] = 0;
  _$jscoverage['build/event/event.js'][1621] = 0;
  _$jscoverage['build/event/event.js'][1622] = 0;
  _$jscoverage['build/event/event.js'][1624] = 0;
  _$jscoverage['build/event/event.js'][1627] = 0;
  _$jscoverage['build/event/event.js'][1628] = 0;
  _$jscoverage['build/event/event.js'][1631] = 0;
  _$jscoverage['build/event/event.js'][1635] = 0;
  _$jscoverage['build/event/event.js'][1636] = 0;
  _$jscoverage['build/event/event.js'][1637] = 0;
  _$jscoverage['build/event/event.js'][1641] = 0;
  _$jscoverage['build/event/event.js'][1648] = 0;
  _$jscoverage['build/event/event.js'][1649] = 0;
  _$jscoverage['build/event/event.js'][1650] = 0;
  _$jscoverage['build/event/event.js'][1654] = 0;
  _$jscoverage['build/event/event.js'][1656] = 0;
  _$jscoverage['build/event/event.js'][1657] = 0;
  _$jscoverage['build/event/event.js'][1658] = 0;
  _$jscoverage['build/event/event.js'][1659] = 0;
  _$jscoverage['build/event/event.js'][1660] = 0;
  _$jscoverage['build/event/event.js'][1662] = 0;
  _$jscoverage['build/event/event.js'][1665] = 0;
  _$jscoverage['build/event/event.js'][1668] = 0;
  _$jscoverage['build/event/event.js'][1671] = 0;
  _$jscoverage['build/event/event.js'][1672] = 0;
  _$jscoverage['build/event/event.js'][1673] = 0;
  _$jscoverage['build/event/event.js'][1674] = 0;
  _$jscoverage['build/event/event.js'][1675] = 0;
  _$jscoverage['build/event/event.js'][1676] = 0;
  _$jscoverage['build/event/event.js'][1677] = 0;
  _$jscoverage['build/event/event.js'][1678] = 0;
  _$jscoverage['build/event/event.js'][1679] = 0;
  _$jscoverage['build/event/event.js'][1682] = 0;
  _$jscoverage['build/event/event.js'][1683] = 0;
  _$jscoverage['build/event/event.js'][1686] = 0;
  _$jscoverage['build/event/event.js'][1692] = 0;
  _$jscoverage['build/event/event.js'][1693] = 0;
  _$jscoverage['build/event/event.js'][1694] = 0;
  _$jscoverage['build/event/event.js'][1698] = 0;
  _$jscoverage['build/event/event.js'][1700] = 0;
  _$jscoverage['build/event/event.js'][1701] = 0;
  _$jscoverage['build/event/event.js'][1702] = 0;
  _$jscoverage['build/event/event.js'][1703] = 0;
  _$jscoverage['build/event/event.js'][1704] = 0;
  _$jscoverage['build/event/event.js'][1708] = 0;
  _$jscoverage['build/event/event.js'][1710] = 0;
  _$jscoverage['build/event/event.js'][1712] = 0;
  _$jscoverage['build/event/event.js'][1713] = 0;
  _$jscoverage['build/event/event.js'][1717] = 0;
  _$jscoverage['build/event/event.js'][1734] = 0;
  _$jscoverage['build/event/event.js'][1735] = 0;
  _$jscoverage['build/event/event.js'][1736] = 0;
  _$jscoverage['build/event/event.js'][1737] = 0;
  _$jscoverage['build/event/event.js'][1738] = 0;
  _$jscoverage['build/event/event.js'][1739] = 0;
  _$jscoverage['build/event/event.js'][1743] = 0;
  _$jscoverage['build/event/event.js'][1744] = 0;
  _$jscoverage['build/event/event.js'][1745] = 0;
  _$jscoverage['build/event/event.js'][1767] = 0;
  _$jscoverage['build/event/event.js'][1768] = 0;
  _$jscoverage['build/event/event.js'][1769] = 0;
  _$jscoverage['build/event/event.js'][1770] = 0;
  _$jscoverage['build/event/event.js'][1771] = 0;
  _$jscoverage['build/event/event.js'][1773] = 0;
  _$jscoverage['build/event/event.js'][1774] = 0;
  _$jscoverage['build/event/event.js'][1777] = 0;
  _$jscoverage['build/event/event.js'][1779] = 0;
  _$jscoverage['build/event/event.js'][1780] = 0;
  _$jscoverage['build/event/event.js'][1781] = 0;
  _$jscoverage['build/event/event.js'][1782] = 0;
  _$jscoverage['build/event/event.js'][1783] = 0;
  _$jscoverage['build/event/event.js'][1784] = 0;
  _$jscoverage['build/event/event.js'][1786] = 0;
  _$jscoverage['build/event/event.js'][1799] = 0;
  _$jscoverage['build/event/event.js'][1811] = 0;
  _$jscoverage['build/event/event.js'][1815] = 0;
  _$jscoverage['build/event/event.js'][1816] = 0;
  _$jscoverage['build/event/event.js'][1817] = 0;
  _$jscoverage['build/event/event.js'][1818] = 0;
  _$jscoverage['build/event/event.js'][1819] = 0;
  _$jscoverage['build/event/event.js'][1820] = 0;
  _$jscoverage['build/event/event.js'][1821] = 0;
  _$jscoverage['build/event/event.js'][1823] = 0;
  _$jscoverage['build/event/event.js'][1826] = 0;
  _$jscoverage['build/event/event.js'][1827] = 0;
  _$jscoverage['build/event/event.js'][1831] = 0;
  _$jscoverage['build/event/event.js'][1832] = 0;
  _$jscoverage['build/event/event.js'][1833] = 0;
  _$jscoverage['build/event/event.js'][1840] = 0;
  _$jscoverage['build/event/event.js'][1841] = 0;
  _$jscoverage['build/event/event.js'][1842] = 0;
  _$jscoverage['build/event/event.js'][1843] = 0;
  _$jscoverage['build/event/event.js'][1844] = 0;
  _$jscoverage['build/event/event.js'][1847] = 0;
  _$jscoverage['build/event/event.js'][1850] = 0;
  _$jscoverage['build/event/event.js'][1861] = 0;
  _$jscoverage['build/event/event.js'][1871] = 0;
  _$jscoverage['build/event/event.js'][1882] = 0;
  _$jscoverage['build/event/event.js'][1883] = 0;
  _$jscoverage['build/event/event.js'][1884] = 0;
  _$jscoverage['build/event/event.js'][1885] = 0;
  _$jscoverage['build/event/event.js'][1886] = 0;
  _$jscoverage['build/event/event.js'][1888] = 0;
  _$jscoverage['build/event/event.js'][1914] = 0;
  _$jscoverage['build/event/event.js'][1915] = 0;
  _$jscoverage['build/event/event.js'][1916] = 0;
  _$jscoverage['build/event/event.js'][1918] = 0;
  _$jscoverage['build/event/event.js'][1919] = 0;
  _$jscoverage['build/event/event.js'][1920] = 0;
  _$jscoverage['build/event/event.js'][1923] = 0;
  _$jscoverage['build/event/event.js'][1939] = 0;
  _$jscoverage['build/event/event.js'][1940] = 0;
  _$jscoverage['build/event/event.js'][1941] = 0;
  _$jscoverage['build/event/event.js'][1943] = 0;
  _$jscoverage['build/event/event.js'][1944] = 0;
  _$jscoverage['build/event/event.js'][1945] = 0;
  _$jscoverage['build/event/event.js'][1948] = 0;
  _$jscoverage['build/event/event.js'][1955] = 0;
  _$jscoverage['build/event/event.js'][1956] = 0;
  _$jscoverage['build/event/event.js'][1964] = 0;
  _$jscoverage['build/event/event.js'][1973] = 0;
  _$jscoverage['build/event/event.js'][1982] = 0;
  _$jscoverage['build/event/event.js'][1990] = 0;
  _$jscoverage['build/event/event.js'][1991] = 0;
  _$jscoverage['build/event/event.js'][1992] = 0;
  _$jscoverage['build/event/event.js'][1993] = 0;
  _$jscoverage['build/event/event.js'][1994] = 0;
  _$jscoverage['build/event/event.js'][1995] = 0;
  _$jscoverage['build/event/event.js'][2002] = 0;
  _$jscoverage['build/event/event.js'][2006] = 0;
  _$jscoverage['build/event/event.js'][2008] = 0;
  _$jscoverage['build/event/event.js'][2009] = 0;
  _$jscoverage['build/event/event.js'][2011] = 0;
  _$jscoverage['build/event/event.js'][2012] = 0;
  _$jscoverage['build/event/event.js'][2013] = 0;
  _$jscoverage['build/event/event.js'][2014] = 0;
  _$jscoverage['build/event/event.js'][2015] = 0;
  _$jscoverage['build/event/event.js'][2023] = 0;
  _$jscoverage['build/event/event.js'][2025] = 0;
  _$jscoverage['build/event/event.js'][2026] = 0;
  _$jscoverage['build/event/event.js'][2027] = 0;
  _$jscoverage['build/event/event.js'][2028] = 0;
  _$jscoverage['build/event/event.js'][2029] = 0;
  _$jscoverage['build/event/event.js'][2030] = 0;
  _$jscoverage['build/event/event.js'][2038] = 0;
  _$jscoverage['build/event/event.js'][2044] = 0;
  _$jscoverage['build/event/event.js'][2045] = 0;
  _$jscoverage['build/event/event.js'][2046] = 0;
  _$jscoverage['build/event/event.js'][2059] = 0;
  _$jscoverage['build/event/event.js'][2061] = 0;
  _$jscoverage['build/event/event.js'][2092] = 0;
  _$jscoverage['build/event/event.js'][2093] = 0;
  _$jscoverage['build/event/event.js'][2095] = 0;
  _$jscoverage['build/event/event.js'][2096] = 0;
  _$jscoverage['build/event/event.js'][2098] = 0;
  _$jscoverage['build/event/event.js'][2099] = 0;
  _$jscoverage['build/event/event.js'][2100] = 0;
  _$jscoverage['build/event/event.js'][2101] = 0;
  _$jscoverage['build/event/event.js'][2103] = 0;
  _$jscoverage['build/event/event.js'][2124] = 0;
  _$jscoverage['build/event/event.js'][2125] = 0;
  _$jscoverage['build/event/event.js'][2126] = 0;
  _$jscoverage['build/event/event.js'][2127] = 0;
  _$jscoverage['build/event/event.js'][2128] = 0;
  _$jscoverage['build/event/event.js'][2129] = 0;
  _$jscoverage['build/event/event.js'][2132] = 0;
  _$jscoverage['build/event/event.js'][2133] = 0;
  _$jscoverage['build/event/event.js'][2134] = 0;
  _$jscoverage['build/event/event.js'][2135] = 0;
  _$jscoverage['build/event/event.js'][2138] = 0;
  _$jscoverage['build/event/event.js'][2141] = 0;
  _$jscoverage['build/event/event.js'][2152] = 0;
  _$jscoverage['build/event/event.js'][2194] = 0;
  _$jscoverage['build/event/event.js'][2195] = 0;
  _$jscoverage['build/event/event.js'][2198] = 0;
  _$jscoverage['build/event/event.js'][2201] = 0;
  _$jscoverage['build/event/event.js'][2204] = 0;
  _$jscoverage['build/event/event.js'][2206] = 0;
  _$jscoverage['build/event/event.js'][2207] = 0;
  _$jscoverage['build/event/event.js'][2210] = 0;
  _$jscoverage['build/event/event.js'][2211] = 0;
  _$jscoverage['build/event/event.js'][2213] = 0;
  _$jscoverage['build/event/event.js'][2214] = 0;
  _$jscoverage['build/event/event.js'][2215] = 0;
  _$jscoverage['build/event/event.js'][2220] = 0;
  _$jscoverage['build/event/event.js'][2242] = 0;
  _$jscoverage['build/event/event.js'][2243] = 0;
  _$jscoverage['build/event/event.js'][2245] = 0;
  _$jscoverage['build/event/event.js'][2246] = 0;
  _$jscoverage['build/event/event.js'][2249] = 0;
  _$jscoverage['build/event/event.js'][2250] = 0;
  _$jscoverage['build/event/event.js'][2251] = 0;
  _$jscoverage['build/event/event.js'][2253] = 0;
  _$jscoverage['build/event/event.js'][2263] = 0;
  _$jscoverage['build/event/event.js'][2264] = 0;
  _$jscoverage['build/event/event.js'][2265] = 0;
  _$jscoverage['build/event/event.js'][2268] = 0;
  _$jscoverage['build/event/event.js'][2273] = 0;
  _$jscoverage['build/event/event.js'][2275] = 0;
  _$jscoverage['build/event/event.js'][2307] = 0;
  _$jscoverage['build/event/event.js'][2308] = 0;
  _$jscoverage['build/event/event.js'][2309] = 0;
  _$jscoverage['build/event/event.js'][2310] = 0;
  _$jscoverage['build/event/event.js'][2313] = 0;
  _$jscoverage['build/event/event.js'][2314] = 0;
  _$jscoverage['build/event/event.js'][2326] = 0;
  _$jscoverage['build/event/event.js'][2337] = 0;
  _$jscoverage['build/event/event.js'][2348] = 0;
  _$jscoverage['build/event/event.js'][2350] = 0;
  _$jscoverage['build/event/event.js'][2351] = 0;
  _$jscoverage['build/event/event.js'][2354] = 0;
  _$jscoverage['build/event/event.js'][2355] = 0;
  _$jscoverage['build/event/event.js'][2357] = 0;
  _$jscoverage['build/event/event.js'][2367] = 0;
  _$jscoverage['build/event/event.js'][2368] = 0;
  _$jscoverage['build/event/event.js'][2369] = 0;
  _$jscoverage['build/event/event.js'][2371] = 0;
  _$jscoverage['build/event/event.js'][2372] = 0;
  _$jscoverage['build/event/event.js'][2374] = 0;
  _$jscoverage['build/event/event.js'][2375] = 0;
  _$jscoverage['build/event/event.js'][2379] = 0;
  _$jscoverage['build/event/event.js'][2383] = 0;
  _$jscoverage['build/event/event.js'][2385] = 0;
  _$jscoverage['build/event/event.js'][2386] = 0;
  _$jscoverage['build/event/event.js'][2387] = 0;
  _$jscoverage['build/event/event.js'][2388] = 0;
  _$jscoverage['build/event/event.js'][2390] = 0;
  _$jscoverage['build/event/event.js'][2391] = 0;
  _$jscoverage['build/event/event.js'][2392] = 0;
  _$jscoverage['build/event/event.js'][2396] = 0;
  _$jscoverage['build/event/event.js'][2397] = 0;
  _$jscoverage['build/event/event.js'][2398] = 0;
  _$jscoverage['build/event/event.js'][2409] = 0;
  _$jscoverage['build/event/event.js'][2410] = 0;
  _$jscoverage['build/event/event.js'][2411] = 0;
  _$jscoverage['build/event/event.js'][2412] = 0;
  _$jscoverage['build/event/event.js'][2419] = 0;
  _$jscoverage['build/event/event.js'][2427] = 0;
  _$jscoverage['build/event/event.js'][2428] = 0;
  _$jscoverage['build/event/event.js'][2429] = 0;
  _$jscoverage['build/event/event.js'][2430] = 0;
  _$jscoverage['build/event/event.js'][2432] = 0;
  _$jscoverage['build/event/event.js'][2440] = 0;
  _$jscoverage['build/event/event.js'][2441] = 0;
  _$jscoverage['build/event/event.js'][2447] = 0;
  _$jscoverage['build/event/event.js'][2456] = 0;
  _$jscoverage['build/event/event.js'][2465] = 0;
  _$jscoverage['build/event/event.js'][2473] = 0;
  _$jscoverage['build/event/event.js'][2500] = 0;
}
_$jscoverage['build/event/event.js'].source = ["<span class=\"c\">/*</span>","<span class=\"c\">Copyright (c) 2009, Yahoo! Inc. All rights reserved.</span>","<span class=\"c\">Code licensed under the BSD License:</span>","<span class=\"c\">http://developer.yahoo.net/yui/license.txt</span>","<span class=\"c\">version: 2.8.0r4</span>","<span class=\"c\">*/</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The CustomEvent class lets you define events for your application</span>","<span class=\"c\"> * that can be subscribed to by one or more independent component.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @param {String}  type The type of event, which is passed to the callback</span>","<span class=\"c\"> *                  when the event fires</span>","<span class=\"c\"> * @param {Object}  context The context the event will fire from.  \"this\" will</span>","<span class=\"c\"> *                  refer to this object in the callback.  Default value: </span>","<span class=\"c\"> *                  the window object.  The listener can override this.</span>","<span class=\"c\"> * @param {boolean} silent pass true to prevent the event from writing to</span>","<span class=\"c\"> *                  the debugsystem</span>","<span class=\"c\"> * @param {int}     signature the signature that the custom event subscriber</span>","<span class=\"c\"> *                  will receive. YAHOO.util.CustomEvent.LIST or </span>","<span class=\"c\"> *                  YAHOO.util.CustomEvent.FLAT.  The default is</span>","<span class=\"c\"> *                  YAHOO.util.CustomEvent.LIST.</span>","<span class=\"c\"> * @param fireOnce {boolean} If configured to fire once, the custom event </span>","<span class=\"c\"> * will only notify subscribers a single time regardless of how many times </span>","<span class=\"c\"> * the event is fired.  In addition, new subscribers will be notified </span>","<span class=\"c\"> * immediately if the event has already been fired.</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @class CustomEvent</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>type<span class=\"k\">,</span> context<span class=\"k\">,</span> silent<span class=\"k\">,</span> signature<span class=\"k\">,</span> fireOnce<span class=\"k\">)</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The type of event, returned to subscribers when the event fires</span>","<span class=\"c\">     * @property type</span>","<span class=\"c\">     * @type string</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>type <span class=\"k\">=</span> type<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The context the event will fire from by default. Defaults to the window obj.</span>","<span class=\"c\">     * @property scope</span>","<span class=\"c\">     * @type object</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>scope <span class=\"k\">=</span> context <span class=\"k\">||</span> window<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * By default all custom events are logged in the debug build. Set silent to true </span>","<span class=\"c\">     * to disable debug output for this event.</span>","<span class=\"c\">     * @property silent</span>","<span class=\"c\">     * @type boolean</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>silent <span class=\"k\">=</span> silent<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * If configured to fire once, the custom event will only notify subscribers</span>","<span class=\"c\">     * a single time regardless of how many times the event is fired.  In addition,</span>","<span class=\"c\">     * new subscribers will be notified immediately if the event has already been</span>","<span class=\"c\">     * fired.</span>","<span class=\"c\">     * @property fireOnce</span>","<span class=\"c\">     * @type boolean</span>","<span class=\"c\">     * @default false</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>fireOnce <span class=\"k\">=</span> fireOnce<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Indicates whether or not this event has ever been fired.</span>","<span class=\"c\">     * @property fired</span>","<span class=\"c\">     * @type boolean</span>","<span class=\"c\">     * @default false</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>fired <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * For fireOnce events the arguments the event was fired with are stored</span>","<span class=\"c\">     * so that new subscribers get the proper payload.</span>","<span class=\"c\">     * @property firedWith</span>","<span class=\"c\">     * @type Array</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>firedWith <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Custom events support two styles of arguments provided to the event</span>","<span class=\"c\">     * subscribers.  </span>","<span class=\"c\">     * &lt;ul&gt;</span>","<span class=\"c\">     * &lt;li&gt;YAHOO.util.CustomEvent.LIST: </span>","<span class=\"c\">     *   &lt;ul&gt;</span>","<span class=\"c\">     *   &lt;li&gt;param1: event name&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;li&gt;param2: array of arguments sent to fire&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;li&gt;param3: &lt;optional&gt; a custom object supplied by the subscriber&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;/ul&gt;</span>","<span class=\"c\">     * &lt;/li&gt;</span>","<span class=\"c\">     * &lt;li&gt;YAHOO.util.CustomEvent.FLAT</span>","<span class=\"c\">     *   &lt;ul&gt;</span>","<span class=\"c\">     *   &lt;li&gt;param1: the first argument passed to fire.  If you need to</span>","<span class=\"c\">     *           pass multiple parameters, use and array or object literal&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;li&gt;param2: &lt;optional&gt; a custom object supplied by the subscriber&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;/ul&gt;</span>","<span class=\"c\">     * &lt;/li&gt;</span>","<span class=\"c\">     * &lt;/ul&gt;</span>","<span class=\"c\">     *   @property signature</span>","<span class=\"c\">     *   @type int</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>signature <span class=\"k\">=</span> signature <span class=\"k\">||</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">.</span>LIST<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The subscribers to this event</span>","<span class=\"c\">     * @property subscribers</span>","<span class=\"c\">     * @type Subscriber[]</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>subscribers <span class=\"k\">=</span> <span class=\"k\">[];</span>","","    <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>silent<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">}</span>","","    <span class=\"k\">var</span> onsubscribeType <span class=\"k\">=</span> <span class=\"s\">\"_YUICEOnSubscribe\"</span><span class=\"k\">;</span>","","    <span class=\"c\">// Only add subscribe events for events that are not generated by </span>","    <span class=\"c\">// CustomEvent</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span>type <span class=\"k\">!==</span> onsubscribeType<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Custom events provide a custom event that fires whenever there is</span>","<span class=\"c\">         * a new subscriber to the event.  This provides an opportunity to</span>","<span class=\"c\">         * handle the case where there is a non-repeating event that has</span>","<span class=\"c\">         * already fired has a new subscriber.  </span>","<span class=\"c\">         *</span>","<span class=\"c\">         * @event subscribeEvent</span>","<span class=\"c\">         * @type YAHOO.util.CustomEvent</span>","<span class=\"c\">         * @param fn {Function} The function to execute</span>","<span class=\"c\">         * @param obj &lt;Object&gt; An object to be passed along when the event fires. </span>","<span class=\"c\">         * Defaults to the custom event.</span>","<span class=\"c\">         * @param override &lt;boolean|Object&gt; If true, the obj passed in becomes the </span>","<span class=\"c\">         * execution context of the listener. If an object, that object becomes </span>","<span class=\"c\">         * the execution context. Defaults to the custom event.</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>subscribeEvent <span class=\"k\">=</span> ","                <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">(</span>onsubscribeType<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","","    <span class=\"k\">}</span> ","","","    <span class=\"c\">/**</span>","<span class=\"c\">     * In order to make it possible to execute the rest of the subscriber</span>","<span class=\"c\">     * stack when one thows an exception, the subscribers exceptions are</span>","<span class=\"c\">     * caught.  The most recent exception is stored in this property</span>","<span class=\"c\">     * @property lastError</span>","<span class=\"c\">     * @type Error</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>lastError <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Subscriber listener sigature constant.  The LIST type returns three</span>","<span class=\"c\"> * parameters: the event type, the array of args passed to fire, and</span>","<span class=\"c\"> * the optional custom object</span>","<span class=\"c\"> * @property YAHOO.util.CustomEvent.LIST</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @type int</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">.</span>LIST <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Subscriber listener sigature constant.  The FLAT type returns two</span>","<span class=\"c\"> * parameters: the first argument passed to fire and the optional </span>","<span class=\"c\"> * custom object</span>","<span class=\"c\"> * @property YAHOO.util.CustomEvent.FLAT</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @type int</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">.</span>FLAT <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>","","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">.</span>prototype <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Subscribes the caller to this event</span>","<span class=\"c\">     * @method subscribe</span>","<span class=\"c\">     * @param {Function} fn        The function to execute</span>","<span class=\"c\">     * @param {Object}   obj       An object to be passed along when the event fires.</span>","<span class=\"c\">     * overrideContext &lt;boolean|Object&gt; If true, the obj passed in becomes the execution </span>","<span class=\"c\">     * context of the listener. If an object, that object becomes the execution context.</span>","<span class=\"c\">     */</span>","    subscribe<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span>fn<span class=\"k\">)</span> <span class=\"k\">{</span>","<span class=\"k\">throw</span> <span class=\"k\">new</span> Error<span class=\"k\">(</span><span class=\"s\">\"Invalid callback for subscriber to '\"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>type <span class=\"k\">+</span> <span class=\"s\">\"'\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>subscribeEvent<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>subscribeEvent<span class=\"k\">.</span>fire<span class=\"k\">(</span>fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">);</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">var</span> s <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Subscriber<span class=\"k\">(</span>fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">);</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>fireOnce <span class=\"k\">&amp;&amp;</span> <span class=\"k\">this</span><span class=\"k\">.</span>fired<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>notify<span class=\"k\">(</span>s<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>firedWith<span class=\"k\">);</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">.</span>push<span class=\"k\">(</span>s<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Unsubscribes subscribers.</span>","<span class=\"c\">     * @method unsubscribe</span>","<span class=\"c\">     * @param {Function} fn  The subscribed function to remove, if not supplied</span>","<span class=\"c\">     *                       all will be removed</span>","<span class=\"c\">     * @param {Object}   obj  The custom object passed to subscribe.  This is</span>","<span class=\"c\">     *                        optional, but if supplied will be used to</span>","<span class=\"c\">     *                        disambiguate multiple listeners that are the same</span>","<span class=\"c\">     *                        (e.g., you subscribe many object using a function</span>","<span class=\"c\">     *                        that lives on the prototype)</span>","<span class=\"c\">     * @return {boolean} True if the subscriber was found and detached.</span>","<span class=\"c\">     */</span>","    unsubscribe<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>fn<span class=\"k\">,</span> obj<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span>fn<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>unsubscribeAll<span class=\"k\">();</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">var</span> found <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span> len<span class=\"k\">=</span><span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len<span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> s <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">[</span>i<span class=\"k\">];</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>s <span class=\"k\">&amp;&amp;</span> s<span class=\"k\">.</span>contains<span class=\"k\">(</span>fn<span class=\"k\">,</span> obj<span class=\"k\">))</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_delete<span class=\"k\">(</span>i<span class=\"k\">);</span>","                found <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> found<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Notifies the subscribers.  The callback functions will be executed</span>","<span class=\"c\">     * from the context specified when the event was created, and with the </span>","<span class=\"c\">     * following parameters:</span>","<span class=\"c\">     *   &lt;ul&gt;</span>","<span class=\"c\">     *   &lt;li&gt;The type of event&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;li&gt;All of the arguments fire() was executed with as an array&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;li&gt;The custom object (if any) that was passed into the subscribe() </span>","<span class=\"c\">     *       method&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;/ul&gt;</span>","<span class=\"c\">     * @method fire </span>","<span class=\"c\">     * @param {Object*} arguments an arbitrary set of parameters to pass to </span>","<span class=\"c\">     *                            the handler.</span>","<span class=\"c\">     * @return {boolean} false if one of the subscribers returned false, </span>","<span class=\"c\">     *                   true otherwise</span>","<span class=\"c\">     */</span>","    fire<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>lastError <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","","        <span class=\"k\">var</span> errors <span class=\"k\">=</span> <span class=\"k\">[],</span>","            len<span class=\"k\">=</span><span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">.</span>length<span class=\"k\">;</span>","","","        <span class=\"k\">var</span> args<span class=\"k\">=[].</span>slice<span class=\"k\">.</span>call<span class=\"k\">(</span>arguments<span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">),</span> ret<span class=\"k\">=</span><span class=\"k\">true</span><span class=\"k\">,</span> i<span class=\"k\">,</span> rebuild<span class=\"k\">=</span><span class=\"k\">false</span><span class=\"k\">;</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>fireOnce<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>fired<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>firedWith <span class=\"k\">=</span> args<span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>fired <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span>len <span class=\"k\">&amp;&amp;</span> <span class=\"k\">this</span><span class=\"k\">.</span>silent<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>silent<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">}</span>","","        <span class=\"c\">// make a copy of the subscribers so that there are</span>","        <span class=\"c\">// no index problems if one subscriber removes another.</span>","        <span class=\"k\">var</span> subs <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">.</span>slice<span class=\"k\">();</span>","","        <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len<span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> s <span class=\"k\">=</span> subs<span class=\"k\">[</span>i<span class=\"k\">];</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span>s<span class=\"k\">)</span> <span class=\"k\">{</span>","                rebuild<span class=\"k\">=</span><span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","","                ret <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>notify<span class=\"k\">(</span>s<span class=\"k\">,</span> args<span class=\"k\">);</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">false</span> <span class=\"k\">===</span> ret<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>silent<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">}</span>","","                    <span class=\"k\">break</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> <span class=\"k\">(</span>ret <span class=\"k\">!==</span> <span class=\"k\">false</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    notify<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>s<span class=\"k\">,</span> args<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"k\">var</span> ret<span class=\"k\">,</span> param<span class=\"k\">=</span><span class=\"k\">null</span><span class=\"k\">,</span> scope <span class=\"k\">=</span> s<span class=\"k\">.</span>getScope<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>scope<span class=\"k\">),</span>","                 throwErrors <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">.</span>throwErrors<span class=\"k\">;</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>silent<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>signature <span class=\"k\">==</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">.</span>FLAT<span class=\"k\">)</span> <span class=\"k\">{</span>","","            <span class=\"k\">if</span> <span class=\"k\">(</span>args<span class=\"k\">.</span>length <span class=\"k\">&gt;</span> <span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                param <span class=\"k\">=</span> args<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">];</span>","            <span class=\"k\">}</span>","","            <span class=\"k\">try</span> <span class=\"k\">{</span>","                ret <span class=\"k\">=</span> s<span class=\"k\">.</span>fn<span class=\"k\">.</span>call<span class=\"k\">(</span>scope<span class=\"k\">,</span> param<span class=\"k\">,</span> s<span class=\"k\">.</span>obj<span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>lastError <span class=\"k\">=</span> e<span class=\"k\">;</span>","                <span class=\"c\">// errors.push(e);</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>throwErrors<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">throw</span> e<span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">try</span> <span class=\"k\">{</span>","                ret <span class=\"k\">=</span> s<span class=\"k\">.</span>fn<span class=\"k\">.</span>call<span class=\"k\">(</span>scope<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>type<span class=\"k\">,</span> args<span class=\"k\">,</span> s<span class=\"k\">.</span>obj<span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>ex<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>lastError <span class=\"k\">=</span> ex<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>throwErrors<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">throw</span> ex<span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> ret<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Removes all listeners</span>","<span class=\"c\">     * @method unsubscribeAll</span>","<span class=\"c\">     * @return {int} The number of listeners unsubscribed</span>","<span class=\"c\">     */</span>","    unsubscribeAll<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> l <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">.</span>length<span class=\"k\">,</span> i<span class=\"k\">;</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span>l<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">&gt;-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">--)</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_delete<span class=\"k\">(</span>i<span class=\"k\">);</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">=[];</span>","","        <span class=\"k\">return</span> l<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * @method _delete</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    _delete<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>index<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> s <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">[</span>index<span class=\"k\">];</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>s<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">delete</span> s<span class=\"k\">.</span>fn<span class=\"k\">;</span>","            <span class=\"k\">delete</span> s<span class=\"k\">.</span>obj<span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"c\">// this.subscribers[index]=null;</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>subscribers<span class=\"k\">.</span>splice<span class=\"k\">(</span>index<span class=\"k\">,</span> <span class=\"s\">1</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * @method toString</span>","<span class=\"c\">     */</span>","    toString<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","         <span class=\"k\">return</span> <span class=\"s\">\"CustomEvent: \"</span> <span class=\"k\">+</span> <span class=\"s\">\"'\"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>type  <span class=\"k\">+</span> <span class=\"s\">\"', \"</span> <span class=\"k\">+</span> ","             <span class=\"s\">\"context: \"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>scope<span class=\"k\">;</span>","","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/////////////////////////////////////////////////////////////////////</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Stores the subscriber information to be used when the event fires.</span>","<span class=\"c\"> * @param {Function} fn       The function to execute</span>","<span class=\"c\"> * @param {Object}   obj      An object to be passed along when the event fires</span>","<span class=\"c\"> * @param {boolean}  overrideContext If true, the obj passed in becomes the execution</span>","<span class=\"c\"> *                            context of the listener</span>","<span class=\"c\"> * @class Subscriber</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Subscriber <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The callback that will be execute when the event fires</span>","<span class=\"c\">     * @property fn</span>","<span class=\"c\">     * @type function</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>fn <span class=\"k\">=</span> fn<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * An optional custom object that will passed to the callback when</span>","<span class=\"c\">     * the event fires</span>","<span class=\"c\">     * @property obj</span>","<span class=\"c\">     * @type object</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>obj <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isUndefined<span class=\"k\">(</span>obj<span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"k\">null</span> <span class=\"k\">:</span> obj<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The default execution context for the event listener is defined when the</span>","<span class=\"c\">     * event is created (usually the object which contains the event).</span>","<span class=\"c\">     * By setting overrideContext to true, the execution context becomes the custom</span>","<span class=\"c\">     * object passed in by the subscriber.  If overrideContext is an object, that </span>","<span class=\"c\">     * object becomes the context.</span>","<span class=\"c\">     * @property overrideContext</span>","<span class=\"c\">     * @type boolean|object</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>overrideContext <span class=\"k\">=</span> overrideContext<span class=\"k\">;</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Returns the execution context for this listener.  If overrideContext was set to true</span>","<span class=\"c\"> * the custom obj will be the context.  If overrideContext is an object, that is the</span>","<span class=\"c\"> * context, otherwise the default context will be used.</span>","<span class=\"c\"> * @method getScope</span>","<span class=\"c\"> * @param {Object} defaultScope the context to use if this listener does not</span>","<span class=\"c\"> *                              override it.</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Subscriber<span class=\"k\">.</span>prototype<span class=\"k\">.</span>getScope <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>defaultScope<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>overrideContext <span class=\"k\">===</span> <span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>obj<span class=\"k\">;</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>overrideContext<span class=\"k\">;</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span>","    <span class=\"k\">return</span> defaultScope<span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Returns true if the fn and obj match this objects properties.</span>","<span class=\"c\"> * Used by the unsubscribe method to match the right subscriber.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @method contains</span>","<span class=\"c\"> * @param {Function} fn the function to execute</span>","<span class=\"c\"> * @param {Object} obj an object to be passed along when the event fires</span>","<span class=\"c\"> * @return {boolean} true if the supplied arguments match this </span>","<span class=\"c\"> *                   subscriber's signature.</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Subscriber<span class=\"k\">.</span>prototype<span class=\"k\">.</span>contains <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>fn<span class=\"k\">,</span> obj<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span>obj<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>fn <span class=\"k\">==</span> fn <span class=\"k\">&amp;&amp;</span> <span class=\"k\">this</span><span class=\"k\">.</span>obj <span class=\"k\">==</span> obj<span class=\"k\">);</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>fn <span class=\"k\">==</span> fn<span class=\"k\">);</span>","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * @method toString</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Subscriber<span class=\"k\">.</span>prototype<span class=\"k\">.</span>toString <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","    <span class=\"k\">return</span> <span class=\"s\">\"Subscriber { obj: \"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>obj  <span class=\"k\">+</span> ","           <span class=\"s\">\", overrideContext: \"</span> <span class=\"k\">+</span>  <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>overrideContext <span class=\"k\">||</span> <span class=\"s\">\"no\"</span><span class=\"k\">)</span> <span class=\"k\">+</span> <span class=\"s\">\" }\"</span><span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The Event Utility provides utilities for managing DOM Events and tools</span>","<span class=\"c\"> * for building event systems</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @module event</span>","<span class=\"c\"> * @title Event Utility</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @requires yahoo</span>","<span class=\"c\"> */</span>","","<span class=\"c\">// The first instance of Event will win if it is loaded more than once.</span>","<span class=\"c\">// @TODO this needs to be changed so that only the state data that needs to</span>","<span class=\"c\">// be preserved is kept, while methods are overwritten/added as needed.</span>","<span class=\"c\">// This means that the module pattern can't be used.</span>","<span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">)</span> <span class=\"k\">{</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The event utility provides functions to add and remove event listeners,</span>","<span class=\"c\"> * event cleansing.  It also tries to automatically remove listeners it</span>","<span class=\"c\"> * registers during the unload event.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @class Event</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","    YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * True after the onload event has fired</span>","<span class=\"c\">         * @property loadComplete</span>","<span class=\"c\">         * @type boolean</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         */</span>","        <span class=\"k\">var</span> loadComplete <span class=\"k\">=</span>  <span class=\"k\">false</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Cache of wrapped listeners</span>","<span class=\"c\">         * @property listeners</span>","<span class=\"c\">         * @type array</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         */</span>","        listeners <span class=\"k\">=</span> <span class=\"k\">[],</span>","","","        <span class=\"c\">/**</span>","<span class=\"c\">         * User-defined unload function that will be fired before all events</span>","<span class=\"c\">         * are detached</span>","<span class=\"c\">         * @property unloadListeners</span>","<span class=\"c\">         * @type array</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         */</span>","        unloadListeners <span class=\"k\">=</span> <span class=\"k\">[],</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * The number of times to poll after window.onload.  This number is</span>","<span class=\"c\">         * increased if additional late-bound handlers are requested after</span>","<span class=\"c\">         * the page load.</span>","<span class=\"c\">         * @property retryCount</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         */</span>","        retryCount <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * onAvailable listeners</span>","<span class=\"c\">         * @property onAvailStack</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         */</span>","        onAvailStack <span class=\"k\">=</span> <span class=\"k\">[],</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Counter for auto id generation</span>","<span class=\"c\">         * @property counter</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         */</span>","        counter <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Normalized keycodes for webkit/safari</span>","<span class=\"c\">         * @property webkitKeymap</span>","<span class=\"c\">         * @type {int: int}</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @final</span>","<span class=\"c\">         */</span>","         webkitKeymap <span class=\"k\">=</span> <span class=\"k\">{</span>","            <span class=\"s\">63232</span><span class=\"k\">:</span> <span class=\"s\">38</span><span class=\"k\">,</span> <span class=\"c\">// up</span>","            <span class=\"s\">63233</span><span class=\"k\">:</span> <span class=\"s\">40</span><span class=\"k\">,</span> <span class=\"c\">// down</span>","            <span class=\"s\">63234</span><span class=\"k\">:</span> <span class=\"s\">37</span><span class=\"k\">,</span> <span class=\"c\">// left</span>","            <span class=\"s\">63235</span><span class=\"k\">:</span> <span class=\"s\">39</span><span class=\"k\">,</span> <span class=\"c\">// right</span>","            <span class=\"s\">63276</span><span class=\"k\">:</span> <span class=\"s\">33</span><span class=\"k\">,</span> <span class=\"c\">// page up</span>","            <span class=\"s\">63277</span><span class=\"k\">:</span> <span class=\"s\">34</span><span class=\"k\">,</span> <span class=\"c\">// page down</span>","            <span class=\"s\">25</span><span class=\"k\">:</span> <span class=\"s\">9</span>      <span class=\"c\">// SHIFT-TAB (Safari provides a different key code in</span>","                       <span class=\"c\">// this case, even though the shiftKey modifier is set)</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","","\t\tisIE <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>ie<span class=\"k\">,</span>","","        <span class=\"c\">// String constants used by the addFocusListener and removeFocusListener methods</span>","\t\t","       \tFOCUSIN <span class=\"k\">=</span> <span class=\"s\">\"focusin\"</span><span class=\"k\">,</span>","       \tFOCUSOUT <span class=\"k\">=</span> <span class=\"s\">\"focusout\"</span><span class=\"k\">;</span>","","        <span class=\"k\">return</span> <span class=\"k\">{</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * The number of times we should look for elements that are not</span>","<span class=\"c\">             * in the DOM at the time the event is requested after the document</span>","<span class=\"c\">             * has been loaded.  The default is 500@amp;40 ms, so it will poll</span>","<span class=\"c\">             * for 20 seconds or until all outstanding handlers are bound</span>","<span class=\"c\">             * (whichever comes first).</span>","<span class=\"c\">             * @property POLL_RETRYS</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            POLL_RETRYS<span class=\"k\">:</span> <span class=\"s\">500</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * The poll interval in milliseconds</span>","<span class=\"c\">             * @property POLL_INTERVAL</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            POLL_INTERVAL<span class=\"k\">:</span> <span class=\"s\">40</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Element to bind, int constant</span>","<span class=\"c\">             * @property EL</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            EL<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Type of event, int constant</span>","<span class=\"c\">             * @property TYPE</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            TYPE<span class=\"k\">:</span> <span class=\"s\">1</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Function to execute, int constant</span>","<span class=\"c\">             * @property FN</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            FN<span class=\"k\">:</span> <span class=\"s\">2</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Function wrapped for context correction and cleanup, int constant</span>","<span class=\"c\">             * @property WFN</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            WFN<span class=\"k\">:</span> <span class=\"s\">3</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Object passed in by the user that will be returned as a </span>","<span class=\"c\">             * parameter to the callback, int constant.  Specific to</span>","<span class=\"c\">             * unload listeners</span>","<span class=\"c\">             * @property OBJ</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            UNLOAD_OBJ<span class=\"k\">:</span> <span class=\"s\">3</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Adjusted context, either the element we are registering the event</span>","<span class=\"c\">             * on or the custom object passed in by the listener, int constant</span>","<span class=\"c\">             * @property ADJ_SCOPE</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            ADJ_SCOPE<span class=\"k\">:</span> <span class=\"s\">4</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * The original obj passed into addListener</span>","<span class=\"c\">             * @property OBJ</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            OBJ<span class=\"k\">:</span> <span class=\"s\">5</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * The original context parameter passed into addListener</span>","<span class=\"c\">             * @property OVERRIDE</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","            OVERRIDE<span class=\"k\">:</span> <span class=\"s\">6</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * The original capture parameter passed into addListener</span>","<span class=\"c\">             * @property CAPTURE</span>","<span class=\"c\">             * @type int</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @final</span>","<span class=\"c\">             */</span>","\t\t\tCAPTURE<span class=\"k\">:</span> <span class=\"s\">7</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * addListener/removeListener can throw errors in unexpected scenarios.</span>","<span class=\"c\">             * These errors are suppressed, the method returns false, and this property</span>","<span class=\"c\">             * is set</span>","<span class=\"c\">             * @property lastError</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @type Error</span>","<span class=\"c\">             */</span>","            lastError<span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Safari detection</span>","<span class=\"c\">             * @property isSafari</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @deprecated use YAHOO.env.ua.webkit</span>","<span class=\"c\">             */</span>","            isSafari<span class=\"k\">:</span> YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>webkit<span class=\"k\">,</span>","            ","            <span class=\"c\">/**</span>","<span class=\"c\">             * webkit version</span>","<span class=\"c\">             * @property webkit</span>","<span class=\"c\">             * @type string</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @deprecated use YAHOO.env.ua.webkit</span>","<span class=\"c\">             */</span>","            webkit<span class=\"k\">:</span> YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>webkit<span class=\"k\">,</span>","            ","            <span class=\"c\">/**</span>","<span class=\"c\">             * IE detection </span>","<span class=\"c\">             * @property isIE</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @deprecated use YAHOO.env.ua.ie</span>","<span class=\"c\">             */</span>","            isIE<span class=\"k\">:</span> isIE<span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * poll handle</span>","<span class=\"c\">             * @property _interval</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _interval<span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * document readystate poll handle</span>","<span class=\"c\">             * @property _dri</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","             _dri<span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Map of special event types</span>","<span class=\"c\">             * @property _specialTypes</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","\t\t\t_specialTypes<span class=\"k\">:</span> <span class=\"k\">{</span>","\t\t\t\tfocusin<span class=\"k\">:</span> <span class=\"k\">(</span>isIE <span class=\"k\">?</span> <span class=\"s\">\"focusin\"</span> <span class=\"k\">:</span> <span class=\"s\">\"focus\"</span><span class=\"k\">),</span>","\t\t\t\tfocusout<span class=\"k\">:</span> <span class=\"k\">(</span>isIE <span class=\"k\">?</span> <span class=\"s\">\"focusout\"</span> <span class=\"k\">:</span> <span class=\"s\">\"blur\"</span><span class=\"k\">)</span>","\t\t\t<span class=\"k\">}</span><span class=\"k\">,</span>","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * True when the document is initially usable</span>","<span class=\"c\">             * @property DOMReady</span>","<span class=\"c\">             * @type boolean</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            DOMReady<span class=\"k\">:</span> <span class=\"k\">false</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Errors thrown by subscribers of custom events are caught</span>","<span class=\"c\">             * and the error message is written to the debug console.  If</span>","<span class=\"c\">             * this property is set to true, it will also re-throw the</span>","<span class=\"c\">             * error.</span>","<span class=\"c\">             * @property throwErrors</span>","<span class=\"c\">             * @type boolean</span>","<span class=\"c\">             * @default false</span>","<span class=\"c\">             */</span>","            throwErrors<span class=\"k\">:</span> <span class=\"k\">false</span><span class=\"k\">,</span>","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * @method startInterval</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            startInterval<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>_interval<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"c\">// var self = this;</span>","                    <span class=\"c\">// var callback = function() { self._tryPreloadAttach(); };</span>","                    <span class=\"c\">// this._interval = setInterval(callback, this.POLL_INTERVAL);</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_interval <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>later<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>POLL_INTERVAL<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_tryPreloadAttach<span class=\"k\">,</span> <span class=\"k\">null</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Executes the supplied callback when the item with the supplied</span>","<span class=\"c\">             * id is found.  This is meant to be used to execute behavior as</span>","<span class=\"c\">             * soon as possible as the page loads.  If you use this after the</span>","<span class=\"c\">             * initial page load it will poll for a fixed time for the element.</span>","<span class=\"c\">             * The number of times it will poll and the frequency are</span>","<span class=\"c\">             * configurable.  By default it will poll for 10 seconds.</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * &lt;p&gt;The callback is executed with a single parameter:</span>","<span class=\"c\">             * the custom object parameter, if provided.&lt;/p&gt;</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method onAvailable</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {string||string[]}   id the id of the element, or an array</span>","<span class=\"c\">             * of ids to look for.</span>","<span class=\"c\">             * @param {function} fn what to execute when the element is found.</span>","<span class=\"c\">             * @param {object}   obj an optional object to be passed back as</span>","<span class=\"c\">             *                   a parameter to fn.</span>","<span class=\"c\">             * @param {boolean|object}  overrideContext If set to true, fn will execute</span>","<span class=\"c\">             *                   in the context of obj, if set to an object it</span>","<span class=\"c\">             *                   will execute in the context of that object</span>","<span class=\"c\">             * @param checkContent {boolean} check child node readiness (onContentReady)</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            onAvailable<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>id<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">,</span> checkContent<span class=\"k\">)</span> <span class=\"k\">{</span>","","                <span class=\"k\">var</span> a <span class=\"k\">=</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>id<span class=\"k\">))</span> <span class=\"k\">?</span> <span class=\"k\">[</span>id<span class=\"k\">]</span> <span class=\"k\">:</span> id<span class=\"k\">;</span>","","                <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>a<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    onAvailStack<span class=\"k\">.</span>push<span class=\"k\">(</span><span class=\"k\">{</span>id<span class=\"k\">:</span>         a<span class=\"k\">[</span>i<span class=\"k\">],</span> ","                                       fn<span class=\"k\">:</span>         fn<span class=\"k\">,</span> ","                                       obj<span class=\"k\">:</span>        obj<span class=\"k\">,</span> ","                                       overrideContext<span class=\"k\">:</span>   overrideContext<span class=\"k\">,</span> ","                                       checkReady<span class=\"k\">:</span> checkContent <span class=\"k\">}</span><span class=\"k\">);</span>","                <span class=\"k\">}</span>","","                retryCount <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>POLL_RETRYS<span class=\"k\">;</span>","","                <span class=\"k\">this</span><span class=\"k\">.</span>startInterval<span class=\"k\">();</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Works the same way as onAvailable, but additionally checks the</span>","<span class=\"c\">             * state of sibling elements to determine if the content of the</span>","<span class=\"c\">             * available element is safe to modify.</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * &lt;p&gt;The callback is executed with a single parameter:</span>","<span class=\"c\">             * the custom object parameter, if provided.&lt;/p&gt;</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method onContentReady</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {string}   id the id of the element to look for.</span>","<span class=\"c\">             * @param {function} fn what to execute when the element is ready.</span>","<span class=\"c\">             * @param {object}   obj an optional object to be passed back as</span>","<span class=\"c\">             *                   a parameter to fn.</span>","<span class=\"c\">             * @param {boolean|object}  overrideContext If set to true, fn will execute</span>","<span class=\"c\">             *                   in the context of obj.  If an object, fn will</span>","<span class=\"c\">             *                   exectute in the context of that object</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            onContentReady<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>id<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>onAvailable<span class=\"k\">(</span>id<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Executes the supplied callback when the DOM is first usable.  This</span>","<span class=\"c\">             * will execute immediately if called after the DOMReady event has</span>","<span class=\"c\">             * fired.   @todo the DOMContentReady event does not fire when the</span>","<span class=\"c\">             * script is dynamically injected into the page.  This means the</span>","<span class=\"c\">             * DOMReady custom event will never fire in FireFox or Opera when the</span>","<span class=\"c\">             * library is injected.  It _will_ fire in Safari, and the IE </span>","<span class=\"c\">             * implementation would allow for us to fire it if the defered script</span>","<span class=\"c\">             * is not available.  We want this to behave the same in all browsers.</span>","<span class=\"c\">             * Is there a way to identify when the script has been injected </span>","<span class=\"c\">             * instead of included inline?  Is there a way to know whether the </span>","<span class=\"c\">             * window onload event has fired without having had a listener attached </span>","<span class=\"c\">             * to it when it did so?</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * &lt;p&gt;The callback is a CustomEvent, so the signature is:&lt;/p&gt;</span>","<span class=\"c\">             * &lt;p&gt;type &amp;lt;string&amp;gt;, args &amp;lt;array&amp;gt;, customobject &amp;lt;object&amp;gt;&lt;/p&gt;</span>","<span class=\"c\">             * &lt;p&gt;For DOMReady events, there are no fire argments, so the</span>","<span class=\"c\">             * signature is:&lt;/p&gt;</span>","<span class=\"c\">             * &lt;p&gt;\"DOMReady\", [], obj&lt;/p&gt;</span>","<span class=\"c\">             *</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method onDOMReady</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {function} fn what to execute when the element is found.</span>","<span class=\"c\">             * @param {object}   obj an optional object to be passed back as</span>","<span class=\"c\">             *                   a parameter to fn.</span>","<span class=\"c\">             * @param {boolean|object}  overrideContext If set to true, fn will execute</span>","<span class=\"c\">             *                   in the context of obj, if set to an object it</span>","<span class=\"c\">             *                   will execute in the context of that object</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            <span class=\"c\">// onDOMReady: function(fn, obj, overrideContext) {</span>","            onDOMReady<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>DOMReadyEvent<span class=\"k\">.</span>subscribe<span class=\"k\">.</span>apply<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>DOMReadyEvent<span class=\"k\">,</span> arguments<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Appends an event handler</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method _addListener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String|HTMLElement|Array|NodeList} el An id, an element </span>","<span class=\"c\">             *  reference, or a collection of ids and/or elements to assign the </span>","<span class=\"c\">             *  listener to.</span>","<span class=\"c\">             * @param {String}   sType     The type of event to append</span>","<span class=\"c\">             * @param {Function} fn        The method the event invokes</span>","<span class=\"c\">             * @param {Object}   obj    An arbitrary object that will be </span>","<span class=\"c\">             *                             passed as a parameter to the handler</span>","<span class=\"c\">             * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes</span>","<span class=\"c\">             *                             the execution context of the listener. If an</span>","<span class=\"c\">             *                             object, this object becomes the execution</span>","<span class=\"c\">             *                             context.</span>","<span class=\"c\">             * @param {boolen}      capture capture or bubble phase</span>","<span class=\"c\">             * @return {Boolean} True if the action was successful or defered,</span>","<span class=\"c\">             *                        false if one or more of the elements </span>","<span class=\"c\">             *                        could not have the listener attached,</span>","<span class=\"c\">             *                        or if the operation throws an exception.</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            _addListener<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">,</span> bCapture<span class=\"k\">)</span> <span class=\"k\">{</span>","","                <span class=\"k\">if</span> <span class=\"k\">(!</span>fn <span class=\"k\">||</span> <span class=\"k\">!</span>fn<span class=\"k\">.</span>call<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"c\">// The el argument can be an array of elements or element ids.</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span> <span class=\"k\">this</span><span class=\"k\">.</span>_isValidCollection<span class=\"k\">(</span>el<span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> ok <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                    <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span>len<span class=\"k\">=</span>el<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len<span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","                        ok <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>on<span class=\"k\">(</span>el<span class=\"k\">[</span>i<span class=\"k\">],</span> ","                                       sType<span class=\"k\">,</span> ","                                       fn<span class=\"k\">,</span> ","                                       obj<span class=\"k\">,</span> ","                                       overrideContext<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> ok<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                    <span class=\"k\">return</span> ok<span class=\"k\">;</span>","","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>el<span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> oEl <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>getEl<span class=\"k\">(</span>el<span class=\"k\">);</span>","                    <span class=\"c\">// If the el argument is a string, we assume it is </span>","                    <span class=\"c\">// actually the id of the element.  If the page is loaded</span>","                    <span class=\"c\">// we convert el to the actual element, otherwise we </span>","                    <span class=\"c\">// defer attaching the event until onload event fires</span>","","                    <span class=\"c\">// check to see if we need to delay hooking up the event </span>","                    <span class=\"c\">// until after the page loads.</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>oEl<span class=\"k\">)</span> <span class=\"k\">{</span>","                        el <span class=\"k\">=</span> oEl<span class=\"k\">;</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        <span class=\"c\">// defer adding the event until the element is available</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>onAvailable<span class=\"k\">(</span>el<span class=\"k\">,</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                           YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">.</span>_addListener<span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">,</span> bCapture<span class=\"k\">);</span>","                        <span class=\"k\">}</span><span class=\"k\">);</span>","","                        <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"c\">// Element should be an html element or an array if we get </span>","                <span class=\"c\">// here.</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>el<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"c\">// we need to make sure we fire registered unload events </span>","                <span class=\"c\">// prior to automatically unhooking them.  So we hang on to </span>","                <span class=\"c\">// these instead of attaching them to the window and fire the</span>","                <span class=\"c\">// handles explicitly during our one unload event.</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">\"unload\"</span> <span class=\"k\">==</span> sType <span class=\"k\">&amp;&amp;</span> obj <span class=\"k\">!==</span> <span class=\"k\">this</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    unloadListeners<span class=\"k\">[</span>unloadListeners<span class=\"k\">.</span>length<span class=\"k\">]</span> <span class=\"k\">=</span>","                            <span class=\"k\">[</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">];</span>","                    <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","","                <span class=\"c\">// if the user chooses to override the context, we use the custom</span>","                <span class=\"c\">// object passed in, otherwise the executing context will be the</span>","                <span class=\"c\">// HTML element that the event is registered on</span>","                <span class=\"k\">var</span> context <span class=\"k\">=</span> el<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>overrideContext <span class=\"k\">===</span> <span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        context <span class=\"k\">=</span> obj<span class=\"k\">;</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        context <span class=\"k\">=</span> overrideContext<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"c\">// wrap the function so we can return the obj object when</span>","                <span class=\"c\">// the event fires;</span>","                <span class=\"k\">var</span> wrappedFn <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"k\">return</span> fn<span class=\"k\">.</span>call<span class=\"k\">(</span>context<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">.</span>getEvent<span class=\"k\">(</span>e<span class=\"k\">,</span> el<span class=\"k\">),</span> ","                                obj<span class=\"k\">);</span>","                    <span class=\"k\">}</span><span class=\"k\">;</span>","","                <span class=\"k\">var</span> li <span class=\"k\">=</span> <span class=\"k\">[</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> wrappedFn<span class=\"k\">,</span> context<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">,</span> bCapture<span class=\"k\">];</span>","                <span class=\"k\">var</span> index <span class=\"k\">=</span> listeners<span class=\"k\">.</span>length<span class=\"k\">;</span>","                <span class=\"c\">// cache the listener so we can try to automatically unload</span>","                listeners<span class=\"k\">[</span>index<span class=\"k\">]</span> <span class=\"k\">=</span> li<span class=\"k\">;</span>","","                <span class=\"k\">try</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_simpleAdd<span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> wrappedFn<span class=\"k\">,</span> bCapture<span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>ex<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"c\">// handle an error trying to attach an event.  If it fails</span>","                    <span class=\"c\">// we need to clean up the cache</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>lastError <span class=\"k\">=</span> ex<span class=\"k\">;</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>removeListener<span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">);</span>","                    <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                ","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Checks to see if the type requested is a special type </span>","<span class=\"c\">\t\t\t * (as defined by the _specialTypes hash), and (if so) returns </span>","<span class=\"c\">\t\t\t * the special type name.</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method _getType</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String}   sType     The type to look up</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","\t\t\t_getType<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>type<span class=\"k\">)</span> <span class=\"k\">{</span>","\t\t\t","\t\t\t\t<span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>_specialTypes<span class=\"k\">[</span>type<span class=\"k\">]</span> <span class=\"k\">||</span> type<span class=\"k\">;</span>","\t\t\t\t","\t\t\t<span class=\"k\">}</span><span class=\"k\">,</span>","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Appends an event handler</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method addListener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String|HTMLElement|Array|NodeList} el An id, an element </span>","<span class=\"c\">             *  reference, or a collection of ids and/or elements to assign the </span>","<span class=\"c\">             *  listener to.</span>","<span class=\"c\">             * @param {String}   sType     The type of event to append</span>","<span class=\"c\">             * @param {Function} fn        The method the event invokes</span>","<span class=\"c\">             * @param {Object}   obj    An arbitrary object that will be </span>","<span class=\"c\">             *                             passed as a parameter to the handler</span>","<span class=\"c\">             * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes</span>","<span class=\"c\">             *                             the execution context of the listener. If an</span>","<span class=\"c\">             *                             object, this object becomes the execution</span>","<span class=\"c\">             *                             context.</span>","<span class=\"c\">             * @return {Boolean} True if the action was successful or defered,</span>","<span class=\"c\">             *                        false if one or more of the elements </span>","<span class=\"c\">             *                        could not have the listener attached,</span>","<span class=\"c\">             *                        or if the operation throws an exception.</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            addListener<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","","\t\t\t\t<span class=\"k\">var</span> capture <span class=\"k\">=</span> <span class=\"k\">((</span>sType <span class=\"k\">==</span> FOCUSIN <span class=\"k\">||</span> sType <span class=\"k\">==</span> FOCUSOUT<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>ie<span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"k\">true</span> <span class=\"k\">:</span> <span class=\"k\">false</span><span class=\"k\">;</span>","","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>_addListener<span class=\"k\">(</span>el<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getType<span class=\"k\">(</span>sType<span class=\"k\">),</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">,</span> capture<span class=\"k\">);</span>","","        \t<span class=\"k\">}</span><span class=\"k\">,</span>","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Attaches a focusin event listener to the specified element for </span>","<span class=\"c\"> \t\t\t * the purpose of listening for the focus event on the element's </span>","<span class=\"c\">             * descendants.</span>","<span class=\"c\">             * @method addFocusListener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String|HTMLElement|Array|NodeList} el An id, an element </span>","<span class=\"c\">             *  reference, or a collection of ids and/or elements to assign the </span>","<span class=\"c\">             *  listener to.</span>","<span class=\"c\">             * @param {Function} fn        The method the event invokes</span>","<span class=\"c\">             * @param {Object}   obj    An arbitrary object that will be </span>","<span class=\"c\">             *                             passed as a parameter to the handler</span>","<span class=\"c\">             * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes</span>","<span class=\"c\">             *                             the execution context of the listener. If an</span>","<span class=\"c\">             *                             object, this object becomes the execution</span>","<span class=\"c\">             *                             context.</span>","<span class=\"c\">             * @return {Boolean} True if the action was successful or defered,</span>","<span class=\"c\">             *                        false if one or more of the elements </span>","<span class=\"c\">             *                        could not have the listener attached,</span>","<span class=\"c\">             *                        or if the operation throws an exception.</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">\t\t\t* @deprecated use YAHOO.util.Event.on and specify \"focusin\" as the event type.</span>","<span class=\"c\">             */</span>","            addFocusListener<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>on<span class=\"k\">(</span>el<span class=\"k\">,</span> FOCUSIN<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>          ","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Removes a focusin event listener to the specified element for </span>","<span class=\"c\">\t\t\t * the purpose of listening for the focus event on the element's </span>","<span class=\"c\">             * descendants.</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method removeFocusListener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String|HTMLElement|Array|NodeList} el An id, an element </span>","<span class=\"c\">             *  reference, or a collection of ids and/or elements to remove</span>","<span class=\"c\">             *  the listener from.</span>","<span class=\"c\">             * @param {Function} fn the method the event invokes.  If fn is</span>","<span class=\"c\">             *  undefined, then all event handlers for the type of event are </span>","<span class=\"c\">             *  removed.</span>","<span class=\"c\">             * @return {boolean} true if the unbind was successful, false </span>","<span class=\"c\">             *  otherwise.</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">         \t * @deprecated use YAHOO.util.Event.removeListener and specify \"focusin\" as the event type.</span>","<span class=\"c\">             */</span>","            removeFocusListener<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> fn<span class=\"k\">)</span> <span class=\"k\">{</span> ","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>removeListener<span class=\"k\">(</span>el<span class=\"k\">,</span> FOCUSIN<span class=\"k\">,</span> fn<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Attaches a focusout event listener to the specified element for </span>","<span class=\"c\">\t\t\t * the purpose of listening for the blur event on the element's </span>","<span class=\"c\">\t\t\t * descendants.</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method addBlurListener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String|HTMLElement|Array|NodeList} el An id, an element </span>","<span class=\"c\">             *  reference, or a collection of ids and/or elements to assign the </span>","<span class=\"c\">             *  listener to.</span>","<span class=\"c\">             * @param {Function} fn        The method the event invokes</span>","<span class=\"c\">             * @param {Object}   obj    An arbitrary object that will be </span>","<span class=\"c\">             *                             passed as a parameter to the handler</span>","<span class=\"c\">             * @param {Boolean|object}  overrideContext  If true, the obj passed in becomes</span>","<span class=\"c\">             *                             the execution context of the listener. If an</span>","<span class=\"c\">             *                             object, this object becomes the execution</span>","<span class=\"c\">             *                             context.</span>","<span class=\"c\">             * @return {Boolean} True if the action was successful or defered,</span>","<span class=\"c\">             *                        false if one or more of the elements </span>","<span class=\"c\">             *                        could not have the listener attached,</span>","<span class=\"c\">             *                        or if the operation throws an exception.</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">         \t * @deprecated use YAHOO.util.Event.on and specify \"focusout\" as the event type.</span>","<span class=\"c\">             */</span>","            addBlurListener<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>on<span class=\"k\">(</span>el<span class=\"k\">,</span> FOCUSOUT<span class=\"k\">,</span> fn<span class=\"k\">,</span> obj<span class=\"k\">,</span> overrideContext<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>          ","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Removes a focusout event listener to the specified element for </span>","<span class=\"c\">\t\t\t * the purpose of listening for the blur event on the element's </span>","<span class=\"c\">\t\t\t * descendants.</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method removeBlurListener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String|HTMLElement|Array|NodeList} el An id, an element </span>","<span class=\"c\">             *  reference, or a collection of ids and/or elements to remove</span>","<span class=\"c\">             *  the listener from.</span>","<span class=\"c\">             * @param {Function} fn the method the event invokes.  If fn is</span>","<span class=\"c\">             *  undefined, then all event handlers for the type of event are </span>","<span class=\"c\">             *  removed.</span>","<span class=\"c\">             * @return {boolean} true if the unbind was successful, false </span>","<span class=\"c\">             *  otherwise.</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">         \t * @deprecated use YAHOO.util.Event.removeListener and specify \"focusout\" as the event type.</span>","<span class=\"c\">             */</span>","            removeBlurListener<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> fn<span class=\"k\">)</span> <span class=\"k\">{</span> ","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>removeListener<span class=\"k\">(</span>el<span class=\"k\">,</span> FOCUSOUT<span class=\"k\">,</span> fn<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Removes an event listener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method removeListener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @param {String|HTMLElement|Array|NodeList} el An id, an element </span>","<span class=\"c\">             *  reference, or a collection of ids and/or elements to remove</span>","<span class=\"c\">             *  the listener from.</span>","<span class=\"c\">             * @param {String} sType the type of event to remove.</span>","<span class=\"c\">             * @param {Function} fn the method the event invokes.  If fn is</span>","<span class=\"c\">             *  undefined, then all event handlers for the type of event are </span>","<span class=\"c\">             *  removed.</span>","<span class=\"c\">             * @return {boolean} true if the unbind was successful, false </span>","<span class=\"c\">             *  otherwise.</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            removeListener<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> i<span class=\"k\">,</span> len<span class=\"k\">,</span> li<span class=\"k\">;</span>","","\t\t\t\tsType <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getType<span class=\"k\">(</span>sType<span class=\"k\">);</span>","","                <span class=\"c\">// The el argument can be a string</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> el <span class=\"k\">==</span> <span class=\"s\">\"string\"</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    el <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>getEl<span class=\"k\">(</span>el<span class=\"k\">);</span>","                <span class=\"c\">// The el argument can be an array of elements or element ids.</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span> <span class=\"k\">this</span><span class=\"k\">.</span>_isValidCollection<span class=\"k\">(</span>el<span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> ok <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                    <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span>el<span class=\"k\">.</span>length<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">&gt;-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">--)</span> <span class=\"k\">{</span>","                        ok <span class=\"k\">=</span> <span class=\"k\">(</span> <span class=\"k\">this</span><span class=\"k\">.</span>removeListener<span class=\"k\">(</span>el<span class=\"k\">[</span>i<span class=\"k\">],</span> sType<span class=\"k\">,</span> fn<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> ok <span class=\"k\">);</span>","                    <span class=\"k\">}</span>","                    <span class=\"k\">return</span> ok<span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">if</span> <span class=\"k\">(!</span>fn <span class=\"k\">||</span> <span class=\"k\">!</span>fn<span class=\"k\">.</span>call<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"c\">//return false;</span>","                    <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>purgeElement<span class=\"k\">(</span>el<span class=\"k\">,</span> <span class=\"k\">false</span><span class=\"k\">,</span> sType<span class=\"k\">);</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">\"unload\"</span> <span class=\"k\">==</span> sType<span class=\"k\">)</span> <span class=\"k\">{</span>","","                    <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span>unloadListeners<span class=\"k\">.</span>length<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">&gt;-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">--)</span> <span class=\"k\">{</span>","                        li <span class=\"k\">=</span> unloadListeners<span class=\"k\">[</span>i<span class=\"k\">];</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>li <span class=\"k\">&amp;&amp;</span> ","                            li<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">]</span> <span class=\"k\">==</span> el <span class=\"k\">&amp;&amp;</span> ","                            li<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">]</span> <span class=\"k\">==</span> sType <span class=\"k\">&amp;&amp;</span> ","                            li<span class=\"k\">[</span><span class=\"s\">2</span><span class=\"k\">]</span> <span class=\"k\">==</span> fn<span class=\"k\">)</span> <span class=\"k\">{</span>","                                unloadListeners<span class=\"k\">.</span>splice<span class=\"k\">(</span>i<span class=\"k\">,</span> <span class=\"s\">1</span><span class=\"k\">);</span>","                                <span class=\"c\">// unloadListeners[i]=null;</span>","                                <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","","                    <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">var</span> cacheItem <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","","                <span class=\"c\">// The index is a hidden parameter; needed to remove it from</span>","                <span class=\"c\">// the method signature because it was tempting users to</span>","                <span class=\"c\">// try and take advantage of it, which is not possible.</span>","                <span class=\"k\">var</span> index <span class=\"k\">=</span> arguments<span class=\"k\">[</span><span class=\"s\">3</span><span class=\"k\">];</span>","  ","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">\"undefined\"</span> <span class=\"k\">===</span> <span class=\"k\">typeof</span> index<span class=\"k\">)</span> <span class=\"k\">{</span>","                    index <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getCacheIndex<span class=\"k\">(</span>listeners<span class=\"k\">,</span> el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">);</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span>index <span class=\"k\">&gt;=</span> <span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    cacheItem <span class=\"k\">=</span> listeners<span class=\"k\">[</span>index<span class=\"k\">];</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">if</span> <span class=\"k\">(!</span>el <span class=\"k\">||</span> <span class=\"k\">!</span>cacheItem<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","","\t\t\t\t<span class=\"k\">var</span> bCapture <span class=\"k\">=</span> cacheItem<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>CAPTURE<span class=\"k\">]</span> <span class=\"k\">===</span> <span class=\"k\">true</span> <span class=\"k\">?</span> <span class=\"k\">true</span> <span class=\"k\">:</span> <span class=\"k\">false</span><span class=\"k\">;</span>","","                <span class=\"k\">try</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_simpleRemove<span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> cacheItem<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>WFN<span class=\"k\">],</span> bCapture<span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>ex<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>lastError <span class=\"k\">=</span> ex<span class=\"k\">;</span>","                    <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"c\">// removed the wrapped handler</span>","                <span class=\"k\">delete</span> listeners<span class=\"k\">[</span>index<span class=\"k\">][</span><span class=\"k\">this</span><span class=\"k\">.</span>WFN<span class=\"k\">];</span>","                <span class=\"k\">delete</span> listeners<span class=\"k\">[</span>index<span class=\"k\">][</span><span class=\"k\">this</span><span class=\"k\">.</span>FN<span class=\"k\">];</span>","                listeners<span class=\"k\">.</span>splice<span class=\"k\">(</span>index<span class=\"k\">,</span> <span class=\"s\">1</span><span class=\"k\">);</span>","                <span class=\"c\">// listeners[index]=null;</span>","","                <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the event's target element.  Safari sometimes provides</span>","<span class=\"c\">             * a text node, and this is automatically resolved to the text</span>","<span class=\"c\">             * node's parent so that it behaves like other browsers.</span>","<span class=\"c\">             * @method getTarget</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @param {boolean} resolveTextNode when set to true the target's</span>","<span class=\"c\">             *                  parent will be returned if the target is a </span>","<span class=\"c\">             *                  text node.  @deprecated, the text node is</span>","<span class=\"c\">             *                  now resolved automatically</span>","<span class=\"c\">             * @return {HTMLElement} the event's target</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getTarget<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">,</span> resolveTextNode<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> t <span class=\"k\">=</span> ev<span class=\"k\">.</span>target <span class=\"k\">||</span> ev<span class=\"k\">.</span>srcElement<span class=\"k\">;</span>","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>resolveTextNode<span class=\"k\">(</span>t<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * In some cases, some browsers will return a text node inside</span>","<span class=\"c\">             * the actual element that was targeted.  This normalizes the</span>","<span class=\"c\">             * return value for getTarget and getRelatedTarget.</span>","<span class=\"c\">             * @method resolveTextNode</span>","<span class=\"c\">             * @param {HTMLElement} node node to resolve</span>","<span class=\"c\">             * @return {HTMLElement} the normized node</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            resolveTextNode<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>n<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">try</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>n <span class=\"k\">&amp;&amp;</span> <span class=\"s\">3</span> <span class=\"k\">==</span> n<span class=\"k\">.</span>nodeType<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"k\">return</span> n<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span> <span class=\"k\">}</span>","","                <span class=\"k\">return</span> n<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the event's pageX</span>","<span class=\"c\">             * @method getPageX</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @return {int} the event's pageX</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getPageX<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> x <span class=\"k\">=</span> ev<span class=\"k\">.</span>pageX<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>x <span class=\"k\">&amp;&amp;</span> <span class=\"s\">0</span> <span class=\"k\">!==</span> x<span class=\"k\">)</span> <span class=\"k\">{</span>","                    x <span class=\"k\">=</span> ev<span class=\"k\">.</span>clientX <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","                    <span class=\"k\">if</span> <span class=\"k\">(</span> <span class=\"k\">this</span><span class=\"k\">.</span>isIE <span class=\"k\">)</span> <span class=\"k\">{</span>","                        x <span class=\"k\">+=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getScrollLeft<span class=\"k\">();</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> x<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the event's pageY</span>","<span class=\"c\">             * @method getPageY</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @return {int} the event's pageY</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getPageY<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> y <span class=\"k\">=</span> ev<span class=\"k\">.</span>pageY<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>y <span class=\"k\">&amp;&amp;</span> <span class=\"s\">0</span> <span class=\"k\">!==</span> y<span class=\"k\">)</span> <span class=\"k\">{</span>","                    y <span class=\"k\">=</span> ev<span class=\"k\">.</span>clientY <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","                    <span class=\"k\">if</span> <span class=\"k\">(</span> <span class=\"k\">this</span><span class=\"k\">.</span>isIE <span class=\"k\">)</span> <span class=\"k\">{</span>","                        y <span class=\"k\">+=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getScrollTop<span class=\"k\">();</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","","                <span class=\"k\">return</span> y<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the pageX and pageY properties as an indexed array.</span>","<span class=\"c\">             * @method getXY</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @return {[x, y]} the pageX and pageY properties of the event</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getXY<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>getPageX<span class=\"k\">(</span>ev<span class=\"k\">),</span> <span class=\"k\">this</span><span class=\"k\">.</span>getPageY<span class=\"k\">(</span>ev<span class=\"k\">)];</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the event's related target </span>","<span class=\"c\">             * @method getRelatedTarget</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @return {HTMLElement} the event's relatedTarget</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getRelatedTarget<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> t <span class=\"k\">=</span> ev<span class=\"k\">.</span>relatedTarget<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>t<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>ev<span class=\"k\">.</span>type <span class=\"k\">==</span> <span class=\"s\">\"mouseout\"</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        t <span class=\"k\">=</span> ev<span class=\"k\">.</span>toElement<span class=\"k\">;</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>ev<span class=\"k\">.</span>type <span class=\"k\">==</span> <span class=\"s\">\"mouseover\"</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        t <span class=\"k\">=</span> ev<span class=\"k\">.</span>fromElement<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>resolveTextNode<span class=\"k\">(</span>t<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the time of the event.  If the time is not included, the</span>","<span class=\"c\">             * event is modified using the current time.</span>","<span class=\"c\">             * @method getTime</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @return {Date} the time of the event</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getTime<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>ev<span class=\"k\">.</span>time<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> t <span class=\"k\">=</span> <span class=\"k\">new</span> Date<span class=\"k\">().</span>getTime<span class=\"k\">();</span>","                    <span class=\"k\">try</span> <span class=\"k\">{</span>","                        ev<span class=\"k\">.</span>time <span class=\"k\">=</span> t<span class=\"k\">;</span>","                    <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>ex<span class=\"k\">)</span> <span class=\"k\">{</span> ","                        <span class=\"k\">this</span><span class=\"k\">.</span>lastError <span class=\"k\">=</span> ex<span class=\"k\">;</span>","                        <span class=\"k\">return</span> t<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> ev<span class=\"k\">.</span>time<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Convenience method for stopPropagation + preventDefault</span>","<span class=\"c\">             * @method stopEvent</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            stopEvent<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>stopPropagation<span class=\"k\">(</span>ev<span class=\"k\">);</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>preventDefault<span class=\"k\">(</span>ev<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Stops event propagation</span>","<span class=\"c\">             * @method stopPropagation</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            stopPropagation<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>ev<span class=\"k\">.</span>stopPropagation<span class=\"k\">)</span> <span class=\"k\">{</span>","                    ev<span class=\"k\">.</span>stopPropagation<span class=\"k\">();</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    ev<span class=\"k\">.</span>cancelBubble <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Prevents the default behavior of the event</span>","<span class=\"c\">             * @method preventDefault</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            preventDefault<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>ev<span class=\"k\">.</span>preventDefault<span class=\"k\">)</span> <span class=\"k\">{</span>","                    ev<span class=\"k\">.</span>preventDefault<span class=\"k\">();</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    ev<span class=\"k\">.</span>returnValue <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","             ","            <span class=\"c\">/**</span>","<span class=\"c\">             * Finds the event in the window object, the caller's arguments, or</span>","<span class=\"c\">             * in the arguments of another method in the callstack.  This is</span>","<span class=\"c\">             * executed automatically for events registered through the event</span>","<span class=\"c\">             * manager, so the implementer should not normally need to execute</span>","<span class=\"c\">             * this function at all.</span>","<span class=\"c\">             * @method getEvent</span>","<span class=\"c\">             * @param {Event} e the event parameter from the handler</span>","<span class=\"c\">             * @param {HTMLElement} boundEl the element the listener is attached to</span>","<span class=\"c\">             * @return {Event} the event </span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getEvent<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>e<span class=\"k\">,</span> boundEl<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> ev <span class=\"k\">=</span> e <span class=\"k\">||</span> window<span class=\"k\">.</span>event<span class=\"k\">;</span>","","                <span class=\"k\">if</span> <span class=\"k\">(!</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> c <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>getEvent<span class=\"k\">.</span>caller<span class=\"k\">;</span>","                    <span class=\"k\">while</span> <span class=\"k\">(</span>c<span class=\"k\">)</span> <span class=\"k\">{</span>","                        ev <span class=\"k\">=</span> c<span class=\"k\">.</span>arguments<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">];</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>ev <span class=\"k\">&amp;&amp;</span> Event <span class=\"k\">==</span> ev<span class=\"k\">.</span>constructor<span class=\"k\">)</span> <span class=\"k\">{</span>","                            <span class=\"k\">break</span><span class=\"k\">;</span>","                        <span class=\"k\">}</span>","                        c <span class=\"k\">=</span> c<span class=\"k\">.</span>caller<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> ev<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the charcode for an event</span>","<span class=\"c\">             * @method getCharCode</span>","<span class=\"c\">             * @param {Event} ev the event</span>","<span class=\"c\">             * @return {int} the event's charCode</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            getCharCode<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>ev<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> code <span class=\"k\">=</span> ev<span class=\"k\">.</span>keyCode <span class=\"k\">||</span> ev<span class=\"k\">.</span>charCode <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">;</span>","","                <span class=\"c\">// webkit key normalization</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>webkit <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span>code <span class=\"k\">in</span> webkitKeymap<span class=\"k\">))</span> <span class=\"k\">{</span>","                    code <span class=\"k\">=</span> webkitKeymap<span class=\"k\">[</span>code<span class=\"k\">];</span>","                <span class=\"k\">}</span>","                <span class=\"k\">return</span> code<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Locating the saved event handler data by function ref</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method _getCacheIndex</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _getCacheIndex<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>a<span class=\"k\">,</span> el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span> l<span class=\"k\">=</span>a<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>l<span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> li <span class=\"k\">=</span> a<span class=\"k\">[</span>i<span class=\"k\">];</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span> li                 <span class=\"k\">&amp;&amp;</span> ","                         li<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>FN<span class=\"k\">]</span> <span class=\"k\">==</span> fn  <span class=\"k\">&amp;&amp;</span> ","                         li<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>EL<span class=\"k\">]</span> <span class=\"k\">==</span> el  <span class=\"k\">&amp;&amp;</span> ","                         li<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>TYPE<span class=\"k\">]</span> <span class=\"k\">==</span> sType <span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"k\">return</span> i<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Generates an unique ID for the element if it does not already </span>","<span class=\"c\">             * have one.</span>","<span class=\"c\">             * @method generateId</span>","<span class=\"c\">             * @param el the element to create the id for</span>","<span class=\"c\">             * @return {string} the resulting id of the element</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            generateId<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>el<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> id <span class=\"k\">=</span> el<span class=\"k\">.</span>id<span class=\"k\">;</span>","","                <span class=\"k\">if</span> <span class=\"k\">(!</span>id<span class=\"k\">)</span> <span class=\"k\">{</span>","                    id <span class=\"k\">=</span> <span class=\"s\">\"yuievtautoid-\"</span> <span class=\"k\">+</span> counter<span class=\"k\">;</span>","                    <span class=\"k\">++</span>counter<span class=\"k\">;</span>","                    el<span class=\"k\">.</span>id <span class=\"k\">=</span> id<span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> id<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","","            <span class=\"c\">/**</span>","<span class=\"c\">             * We want to be able to use getElementsByTagName as a collection</span>","<span class=\"c\">             * to attach a group of events to.  Unfortunately, different </span>","<span class=\"c\">             * browsers return different types of collections.  This function</span>","<span class=\"c\">             * tests to determine if the object is array-like.  It will also </span>","<span class=\"c\">             * fail if the object is an array, but is empty.</span>","<span class=\"c\">             * @method _isValidCollection</span>","<span class=\"c\">             * @param o the object to test</span>","<span class=\"c\">             * @return {boolean} true if the object is array-like and populated</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _isValidCollection<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">try</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">(</span> o                     <span class=\"k\">&amp;&amp;</span> <span class=\"c\">// o is something</span>","                             <span class=\"k\">typeof</span> o <span class=\"k\">!==</span> <span class=\"s\">\"string\"</span> <span class=\"k\">&amp;&amp;</span> <span class=\"c\">// o is not a string</span>","                             o<span class=\"k\">.</span>length              <span class=\"k\">&amp;&amp;</span> <span class=\"c\">// o is indexed</span>","                             <span class=\"k\">!</span>o<span class=\"k\">.</span>tagName            <span class=\"k\">&amp;&amp;</span> <span class=\"c\">// o is not an HTML element</span>","                             <span class=\"k\">!</span>o<span class=\"k\">.</span>alert              <span class=\"k\">&amp;&amp;</span> <span class=\"c\">// o is not a window</span>","                             <span class=\"k\">typeof</span> o<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">]</span> <span class=\"k\">!==</span> <span class=\"s\">\"undefined\"</span> <span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>ex<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             * @property elCache</span>","<span class=\"c\">             * DOM element cache</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @deprecated Elements are not cached due to issues that arise when</span>","<span class=\"c\">             * elements are removed and re-added</span>","<span class=\"c\">             */</span>","            elCache<span class=\"k\">:</span> <span class=\"k\">{}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * We cache elements bound by id because when the unload event </span>","<span class=\"c\">             * fires, we can no longer use document.getElementById</span>","<span class=\"c\">             * @method getEl</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             * @deprecated Elements are not cached any longer</span>","<span class=\"c\">             */</span>","            getEl<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>id<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> id <span class=\"k\">===</span> <span class=\"s\">\"string\"</span><span class=\"k\">)</span> <span class=\"k\">?</span> document<span class=\"k\">.</span>getElementById<span class=\"k\">(</span>id<span class=\"k\">)</span> <span class=\"k\">:</span> id<span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Clears the element cache</span>","<span class=\"c\">             * @deprecated Elements are not cached any longer</span>","<span class=\"c\">             * @method clearCache</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            clearCache<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span> <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Custom event the fires when the dom is initially usable</span>","<span class=\"c\">             * @event DOMReadyEvent</span>","<span class=\"c\">             */</span>","            DOMReadyEvent<span class=\"k\">:</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">(</span><span class=\"s\">\"DOMReady\"</span><span class=\"k\">,</span> YAHOO<span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">,</span> <span class=\"s\">1</span><span class=\"k\">),</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * hook up any deferred listeners</span>","<span class=\"c\">             * @method _load</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _load<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>","","                <span class=\"k\">if</span> <span class=\"k\">(!</span>loadComplete<span class=\"k\">)</span> <span class=\"k\">{</span>","                    loadComplete <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                    <span class=\"k\">var</span> EU <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">;</span>","","                    <span class=\"c\">// Just in case DOMReady did not go off for some reason</span>","                    EU<span class=\"k\">.</span>_ready<span class=\"k\">();</span>","","                    <span class=\"c\">// Available elements may not have been detected before the</span>","                    <span class=\"c\">// window load event fires. Try to find them now so that the</span>","                    <span class=\"c\">// the user is more likely to get the onAvailable notifications</span>","                    <span class=\"c\">// before the window load notification</span>","                    EU<span class=\"k\">.</span>_tryPreloadAttach<span class=\"k\">();</span>","","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Fires the DOMReady event listeners the first time the document is</span>","<span class=\"c\">             * usable.</span>","<span class=\"c\">             * @method _ready</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _ready<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> EU <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>EU<span class=\"k\">.</span>DOMReady<span class=\"k\">)</span> <span class=\"k\">{</span>","                    EU<span class=\"k\">.</span>DOMReady<span class=\"k\">=</span><span class=\"k\">true</span><span class=\"k\">;</span>","","                    <span class=\"c\">// Fire the content ready custom event</span>","                    EU<span class=\"k\">.</span>DOMReadyEvent<span class=\"k\">.</span>fire<span class=\"k\">();</span>","","                    <span class=\"c\">// Remove the DOMContentLoaded (FF/Opera)</span>","                    EU<span class=\"k\">.</span>_simpleRemove<span class=\"k\">(</span>document<span class=\"k\">,</span> <span class=\"s\">\"DOMContentLoaded\"</span><span class=\"k\">,</span> EU<span class=\"k\">.</span>_ready<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Polling function that runs before the onload event fires, </span>","<span class=\"c\">             * attempting to attach to DOM Nodes as soon as they are </span>","<span class=\"c\">             * available</span>","<span class=\"c\">             * @method _tryPreloadAttach</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _tryPreloadAttach<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span>onAvailStack<span class=\"k\">.</span>length <span class=\"k\">===</span> <span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    retryCount <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_interval<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"c\">// clearInterval(this._interval);</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>_interval<span class=\"k\">.</span>cancel<span class=\"k\">();</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>_interval <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span> ","                    <span class=\"k\">return</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>locked<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>isIE<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"c\">// Hold off if DOMReady has not fired and check current</span>","                    <span class=\"c\">// readyState to protect against the IE operation aborted</span>","                    <span class=\"c\">// issue.</span>","                    <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>DOMReady<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>startInterval<span class=\"k\">();</span>","                        <span class=\"k\">return</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">this</span><span class=\"k\">.</span>locked <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","","","                <span class=\"c\">// keep trying until after the page is loaded.  We need to </span>","                <span class=\"c\">// check the page load state prior to trying to bind the </span>","                <span class=\"c\">// elements so that we can be certain all elements have been </span>","                <span class=\"c\">// tested appropriately</span>","                <span class=\"k\">var</span> tryAgain <span class=\"k\">=</span> <span class=\"k\">!</span>loadComplete<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>tryAgain<span class=\"k\">)</span> <span class=\"k\">{</span>","                    tryAgain <span class=\"k\">=</span> <span class=\"k\">(</span>retryCount <span class=\"k\">&gt;</span> <span class=\"s\">0</span> <span class=\"k\">&amp;&amp;</span> onAvailStack<span class=\"k\">.</span>length <span class=\"k\">&gt;</span> <span class=\"s\">0</span><span class=\"k\">);</span>","                <span class=\"k\">}</span>","","                <span class=\"c\">// onAvailable</span>","                <span class=\"k\">var</span> notAvail <span class=\"k\">=</span> <span class=\"k\">[];</span>","","                <span class=\"k\">var</span> executeItem <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> item<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> context <span class=\"k\">=</span> el<span class=\"k\">;</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>item<span class=\"k\">.</span>overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>item<span class=\"k\">.</span>overrideContext <span class=\"k\">===</span> <span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                            context <span class=\"k\">=</span> item<span class=\"k\">.</span>obj<span class=\"k\">;</span>","                        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                            context <span class=\"k\">=</span> item<span class=\"k\">.</span>overrideContext<span class=\"k\">;</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","                    item<span class=\"k\">.</span>fn<span class=\"k\">.</span>call<span class=\"k\">(</span>context<span class=\"k\">,</span> item<span class=\"k\">.</span>obj<span class=\"k\">);</span>","                <span class=\"k\">}</span><span class=\"k\">;</span>","","                <span class=\"k\">var</span> i<span class=\"k\">,</span> len<span class=\"k\">,</span> item<span class=\"k\">,</span> el<span class=\"k\">,</span> ready<span class=\"k\">=[];</span>","","                <span class=\"c\">// onAvailable onContentReady</span>","                <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span> len<span class=\"k\">=</span>onAvailStack<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len<span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    item <span class=\"k\">=</span> onAvailStack<span class=\"k\">[</span>i<span class=\"k\">];</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>item<span class=\"k\">)</span> <span class=\"k\">{</span>","                        el <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>getEl<span class=\"k\">(</span>item<span class=\"k\">.</span>id<span class=\"k\">);</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>el<span class=\"k\">)</span> <span class=\"k\">{</span>","                            <span class=\"k\">if</span> <span class=\"k\">(</span>item<span class=\"k\">.</span>checkReady<span class=\"k\">)</span> <span class=\"k\">{</span>","                                <span class=\"k\">if</span> <span class=\"k\">(</span>loadComplete <span class=\"k\">||</span> el<span class=\"k\">.</span>nextSibling <span class=\"k\">||</span> <span class=\"k\">!</span>tryAgain<span class=\"k\">)</span> <span class=\"k\">{</span>","                                    ready<span class=\"k\">.</span>push<span class=\"k\">(</span>item<span class=\"k\">);</span>","                                    onAvailStack<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                                <span class=\"k\">}</span>","                            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                                executeItem<span class=\"k\">(</span>el<span class=\"k\">,</span> item<span class=\"k\">);</span>","                                onAvailStack<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                            <span class=\"k\">}</span>","                        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                            notAvail<span class=\"k\">.</span>push<span class=\"k\">(</span>item<span class=\"k\">);</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","                ","                <span class=\"c\">// make sure onContentReady fires after onAvailable</span>","                <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span> len<span class=\"k\">=</span>ready<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len<span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    item <span class=\"k\">=</span> ready<span class=\"k\">[</span>i<span class=\"k\">];</span>","                    executeItem<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>getEl<span class=\"k\">(</span>item<span class=\"k\">.</span>id<span class=\"k\">),</span> item<span class=\"k\">);</span>","                <span class=\"k\">}</span>","","","                retryCount<span class=\"k\">--;</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span>tryAgain<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span>onAvailStack<span class=\"k\">.</span>length<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">&gt;-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">--)</span> <span class=\"k\">{</span>","                        item <span class=\"k\">=</span> onAvailStack<span class=\"k\">[</span>i<span class=\"k\">];</span>","                        <span class=\"k\">if</span> <span class=\"k\">(!</span>item <span class=\"k\">||</span> <span class=\"k\">!</span>item<span class=\"k\">.</span>id<span class=\"k\">)</span> <span class=\"k\">{</span>","                            onAvailStack<span class=\"k\">.</span>splice<span class=\"k\">(</span>i<span class=\"k\">,</span> <span class=\"s\">1</span><span class=\"k\">);</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","","                    <span class=\"k\">this</span><span class=\"k\">.</span>startInterval<span class=\"k\">();</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_interval<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"c\">// clearInterval(this._interval);</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>_interval<span class=\"k\">.</span>cancel<span class=\"k\">();</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>_interval <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">this</span><span class=\"k\">.</span>locked <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Removes all listeners attached to the given element via addListener.</span>","<span class=\"c\">             * Optionally, the node's children can also be purged.</span>","<span class=\"c\">             * Optionally, you can specify a specific type of event to remove.</span>","<span class=\"c\">             * @method purgeElement</span>","<span class=\"c\">             * @param {HTMLElement} el the element to purge</span>","<span class=\"c\">             * @param {boolean} recurse recursively purge this element's children</span>","<span class=\"c\">             * as well.  Use with caution.</span>","<span class=\"c\">             * @param {string} sType optional type of listener to purge. If</span>","<span class=\"c\">             * left out, all listeners will be removed</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            purgeElement<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>el<span class=\"k\">,</span> recurse<span class=\"k\">,</span> sType<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> oEl <span class=\"k\">=</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>el<span class=\"k\">))</span> <span class=\"k\">?</span> <span class=\"k\">this</span><span class=\"k\">.</span>getEl<span class=\"k\">(</span>el<span class=\"k\">)</span> <span class=\"k\">:</span> el<span class=\"k\">;</span>","                <span class=\"k\">var</span> elListeners <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>getListeners<span class=\"k\">(</span>oEl<span class=\"k\">,</span> sType<span class=\"k\">),</span> i<span class=\"k\">,</span> len<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>elListeners<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span>elListeners<span class=\"k\">.</span>length<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">&gt;-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">--)</span> <span class=\"k\">{</span>","                        <span class=\"k\">var</span> l <span class=\"k\">=</span> elListeners<span class=\"k\">[</span>i<span class=\"k\">];</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>removeListener<span class=\"k\">(</span>oEl<span class=\"k\">,</span> l<span class=\"k\">.</span>type<span class=\"k\">,</span> l<span class=\"k\">.</span>fn<span class=\"k\">);</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span>recurse <span class=\"k\">&amp;&amp;</span> oEl <span class=\"k\">&amp;&amp;</span> oEl<span class=\"k\">.</span>childNodes<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span>len<span class=\"k\">=</span>oEl<span class=\"k\">.</span>childNodes<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len <span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>purgeElement<span class=\"k\">(</span>oEl<span class=\"k\">.</span>childNodes<span class=\"k\">[</span>i<span class=\"k\">],</span> recurse<span class=\"k\">,</span> sType<span class=\"k\">);</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns all listeners attached to the given element via addListener.</span>","<span class=\"c\">             * Optionally, you can specify a specific type of event to return.</span>","<span class=\"c\">             * @method getListeners</span>","<span class=\"c\">             * @param el {HTMLElement|string} the element or element id to inspect </span>","<span class=\"c\">             * @param sType {string} optional type of listener to return. If</span>","<span class=\"c\">             * left out, all listeners will be returned</span>","<span class=\"c\">             * @return {Object} the listener. Contains the following fields:</span>","<span class=\"c\">             * &amp;nbsp;&amp;nbsp;type:   (string)   the type of event</span>","<span class=\"c\">             * &amp;nbsp;&amp;nbsp;fn:     (function) the callback supplied to addListener</span>","<span class=\"c\">             * &amp;nbsp;&amp;nbsp;obj:    (object)   the custom object supplied to addListener</span>","<span class=\"c\">             * &amp;nbsp;&amp;nbsp;adjust: (boolean|object)  whether or not to adjust the default context</span>","<span class=\"c\">             * &amp;nbsp;&amp;nbsp;scope: (boolean)  the derived context based on the adjust parameter</span>","<span class=\"c\">             * &amp;nbsp;&amp;nbsp;index:  (int)      its position in the Event util listener cache</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>           ","            getListeners<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> results<span class=\"k\">=[],</span> searchLists<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>sType<span class=\"k\">)</span> <span class=\"k\">{</span>","                    searchLists <span class=\"k\">=</span> <span class=\"k\">[</span>listeners<span class=\"k\">,</span> unloadListeners<span class=\"k\">];</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>sType <span class=\"k\">===</span> <span class=\"s\">\"unload\"</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    searchLists <span class=\"k\">=</span> <span class=\"k\">[</span>unloadListeners<span class=\"k\">];</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","\t\t\t\t\tsType <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getType<span class=\"k\">(</span>sType<span class=\"k\">);</span>","                    searchLists <span class=\"k\">=</span> <span class=\"k\">[</span>listeners<span class=\"k\">];</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">var</span> oEl <span class=\"k\">=</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>el<span class=\"k\">))</span> <span class=\"k\">?</span> <span class=\"k\">this</span><span class=\"k\">.</span>getEl<span class=\"k\">(</span>el<span class=\"k\">)</span> <span class=\"k\">:</span> el<span class=\"k\">;</span>","","                <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> j<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span>j<span class=\"k\">&lt;</span>searchLists<span class=\"k\">.</span>length<span class=\"k\">;</span> j<span class=\"k\">=</span>j<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> searchList <span class=\"k\">=</span> searchLists<span class=\"k\">[</span>j<span class=\"k\">];</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>searchList<span class=\"k\">)</span> <span class=\"k\">{</span>","                        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span>len<span class=\"k\">=</span>searchList<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len <span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","                            <span class=\"k\">var</span> l <span class=\"k\">=</span> searchList<span class=\"k\">[</span>i<span class=\"k\">];</span>","                            <span class=\"k\">if</span> <span class=\"k\">(</span> l  <span class=\"k\">&amp;&amp;</span> l<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>EL<span class=\"k\">]</span> <span class=\"k\">===</span> oEl <span class=\"k\">&amp;&amp;</span> ","                                    <span class=\"k\">(!</span>sType <span class=\"k\">||</span> sType <span class=\"k\">===</span> l<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>TYPE<span class=\"k\">])</span> <span class=\"k\">)</span> <span class=\"k\">{</span>","                                results<span class=\"k\">.</span>push<span class=\"k\">(</span><span class=\"k\">{</span>","                                    type<span class=\"k\">:</span>   l<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>TYPE<span class=\"k\">],</span>","                                    fn<span class=\"k\">:</span>     l<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>FN<span class=\"k\">],</span>","                                    obj<span class=\"k\">:</span>    l<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>OBJ<span class=\"k\">],</span>","                                    adjust<span class=\"k\">:</span> l<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>OVERRIDE<span class=\"k\">],</span>","                                    scope<span class=\"k\">:</span>  l<span class=\"k\">[</span><span class=\"k\">this</span><span class=\"k\">.</span>ADJ_SCOPE<span class=\"k\">],</span>","                                    index<span class=\"k\">:</span>  i","                                <span class=\"k\">}</span><span class=\"k\">);</span>","                            <span class=\"k\">}</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                <span class=\"k\">return</span> <span class=\"k\">(</span>results<span class=\"k\">.</span>length<span class=\"k\">)</span> <span class=\"k\">?</span> results <span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Removes all listeners registered by pe.event.  Called </span>","<span class=\"c\">             * automatically during the unload event.</span>","<span class=\"c\">             * @method _unload</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _unload<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>","","                <span class=\"k\">var</span> EU <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">,</span> i<span class=\"k\">,</span> j<span class=\"k\">,</span> l<span class=\"k\">,</span> len<span class=\"k\">,</span> index<span class=\"k\">,</span>","                         ul <span class=\"k\">=</span> unloadListeners<span class=\"k\">.</span>slice<span class=\"k\">(),</span> context<span class=\"k\">;</span>","","                <span class=\"c\">// execute and clear stored unload listeners</span>","                <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span> len<span class=\"k\">=</span>unloadListeners<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">&lt;</span>len<span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","                    l <span class=\"k\">=</span> ul<span class=\"k\">[</span>i<span class=\"k\">];</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>l<span class=\"k\">)</span> <span class=\"k\">{</span>","                        context <span class=\"k\">=</span> window<span class=\"k\">;</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>l<span class=\"k\">[</span>EU<span class=\"k\">.</span>ADJ_SCOPE<span class=\"k\">])</span> <span class=\"k\">{</span>","                            <span class=\"k\">if</span> <span class=\"k\">(</span>l<span class=\"k\">[</span>EU<span class=\"k\">.</span>ADJ_SCOPE<span class=\"k\">]</span> <span class=\"k\">===</span> <span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                                context <span class=\"k\">=</span> l<span class=\"k\">[</span>EU<span class=\"k\">.</span>UNLOAD_OBJ<span class=\"k\">];</span>","                            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                                context <span class=\"k\">=</span> l<span class=\"k\">[</span>EU<span class=\"k\">.</span>ADJ_SCOPE<span class=\"k\">];</span>","                            <span class=\"k\">}</span>","                        <span class=\"k\">}</span>","                        l<span class=\"k\">[</span>EU<span class=\"k\">.</span>FN<span class=\"k\">].</span>call<span class=\"k\">(</span>context<span class=\"k\">,</span> EU<span class=\"k\">.</span>getEvent<span class=\"k\">(</span>e<span class=\"k\">,</span> l<span class=\"k\">[</span>EU<span class=\"k\">.</span>EL<span class=\"k\">]),</span> l<span class=\"k\">[</span>EU<span class=\"k\">.</span>UNLOAD_OBJ<span class=\"k\">]</span> <span class=\"k\">);</span>","                        ul<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","","                l <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                context <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                unloadListeners <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","","                <span class=\"c\">// Remove listeners to handle IE memory leaks</span>","                <span class=\"c\">// 2.5.0 listeners are removed for all browsers again.  FireFox preserves</span>","                <span class=\"c\">// at least some listeners between page refreshes, potentially causing</span>","                <span class=\"c\">// errors during page load (mouseover listeners firing before they</span>","                <span class=\"c\">// should if the user moves the mouse at the correct moment).</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>listeners<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">for</span> <span class=\"k\">(</span>j<span class=\"k\">=</span>listeners<span class=\"k\">.</span>length<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span> j<span class=\"k\">&gt;-</span><span class=\"s\">1</span><span class=\"k\">;</span> j<span class=\"k\">--)</span> <span class=\"k\">{</span>","                        l <span class=\"k\">=</span> listeners<span class=\"k\">[</span>j<span class=\"k\">];</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>l<span class=\"k\">)</span> <span class=\"k\">{</span>","                            EU<span class=\"k\">.</span>removeListener<span class=\"k\">(</span>l<span class=\"k\">[</span>EU<span class=\"k\">.</span>EL<span class=\"k\">],</span> l<span class=\"k\">[</span>EU<span class=\"k\">.</span>TYPE<span class=\"k\">],</span> l<span class=\"k\">[</span>EU<span class=\"k\">.</span>FN<span class=\"k\">],</span> j<span class=\"k\">);</span>","                        <span class=\"k\">}</span> ","                    <span class=\"k\">}</span>","                    l<span class=\"k\">=</span><span class=\"k\">null</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","","                EU<span class=\"k\">.</span>_simpleRemove<span class=\"k\">(</span>window<span class=\"k\">,</span> <span class=\"s\">\"unload\"</span><span class=\"k\">,</span> EU<span class=\"k\">.</span>_unload<span class=\"k\">);</span>","","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns scrollLeft</span>","<span class=\"c\">             * @method _getScrollLeft</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _getScrollLeft<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getScroll<span class=\"k\">()[</span><span class=\"s\">1</span><span class=\"k\">];</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns scrollTop</span>","<span class=\"c\">             * @method _getScrollTop</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _getScrollTop<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>_getScroll<span class=\"k\">()[</span><span class=\"s\">0</span><span class=\"k\">];</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Returns the scrollTop and scrollLeft.  Used to calculate the </span>","<span class=\"c\">             * pageX and pageY in Internet Explorer</span>","<span class=\"c\">             * @method _getScroll</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _getScroll<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> dd <span class=\"k\">=</span> document<span class=\"k\">.</span>documentElement<span class=\"k\">,</span> db <span class=\"k\">=</span> document<span class=\"k\">.</span>body<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>dd <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span>dd<span class=\"k\">.</span>scrollTop <span class=\"k\">||</span> dd<span class=\"k\">.</span>scrollLeft<span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">[</span>dd<span class=\"k\">.</span>scrollTop<span class=\"k\">,</span> dd<span class=\"k\">.</span>scrollLeft<span class=\"k\">];</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>db<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">[</span>db<span class=\"k\">.</span>scrollTop<span class=\"k\">,</span> db<span class=\"k\">.</span>scrollLeft<span class=\"k\">];</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">];</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span>","            ","            <span class=\"c\">/**</span>","<span class=\"c\">             * Used by old versions of CustomEvent, restored for backwards</span>","<span class=\"c\">             * compatibility</span>","<span class=\"c\">             * @method regCE</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @deprecated still here for backwards compatibility</span>","<span class=\"c\">             */</span>","            regCE<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{}</span><span class=\"k\">,</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Adds a DOM event directly without the caching, cleanup, context adj, etc</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method _simpleAdd</span>","<span class=\"c\">             * @param {HTMLElement} el      the element to bind the handler to</span>","<span class=\"c\">             * @param {string}      sType   the type of event handler</span>","<span class=\"c\">             * @param {function}    fn      the callback to invoke</span>","<span class=\"c\">             * @param {boolen}      capture capture or bubble phase</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _simpleAdd<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>window<span class=\"k\">.</span>addEventListener<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">function</span><span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> capture<span class=\"k\">)</span> <span class=\"k\">{</span>","                        el<span class=\"k\">.</span>addEventListener<span class=\"k\">(</span>sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> <span class=\"k\">(</span>capture<span class=\"k\">));</span>","                    <span class=\"k\">}</span><span class=\"k\">;</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>window<span class=\"k\">.</span>attachEvent<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">function</span><span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> capture<span class=\"k\">)</span> <span class=\"k\">{</span>","                        el<span class=\"k\">.</span>attachEvent<span class=\"k\">(</span><span class=\"s\">\"on\"</span> <span class=\"k\">+</span> sType<span class=\"k\">,</span> fn<span class=\"k\">);</span>","                    <span class=\"k\">}</span><span class=\"k\">;</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{}</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">(),</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Basic remove listener</span>","<span class=\"c\">             *</span>","<span class=\"c\">             * @method _simpleRemove</span>","<span class=\"c\">             * @param {HTMLElement} el      the element to bind the handler to</span>","<span class=\"c\">             * @param {string}      sType   the type of event handler</span>","<span class=\"c\">             * @param {function}    fn      the callback to invoke</span>","<span class=\"c\">             * @param {boolen}      capture capture or bubble phase</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             * @private</span>","<span class=\"c\">             */</span>","            _simpleRemove<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>window<span class=\"k\">.</span>removeEventListener<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> capture<span class=\"k\">)</span> <span class=\"k\">{</span>","                        el<span class=\"k\">.</span>removeEventListener<span class=\"k\">(</span>sType<span class=\"k\">,</span> fn<span class=\"k\">,</span> <span class=\"k\">(</span>capture<span class=\"k\">));</span>","                    <span class=\"k\">}</span><span class=\"k\">;</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>window<span class=\"k\">.</span>detachEvent<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">function</span> <span class=\"k\">(</span>el<span class=\"k\">,</span> sType<span class=\"k\">,</span> fn<span class=\"k\">)</span> <span class=\"k\">{</span>","                        el<span class=\"k\">.</span>detachEvent<span class=\"k\">(</span><span class=\"s\">\"on\"</span> <span class=\"k\">+</span> sType<span class=\"k\">,</span> fn<span class=\"k\">);</span>","                    <span class=\"k\">}</span><span class=\"k\">;</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{}</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">()</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","","    <span class=\"k\">}</span><span class=\"k\">();</span>","","    <span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> EU <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">;</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * YAHOO.util.Event.on is an alias for addListener</span>","<span class=\"c\">         * @method on</span>","<span class=\"c\">         * @see addListener</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        EU<span class=\"k\">.</span>on <span class=\"k\">=</span> EU<span class=\"k\">.</span>addListener<span class=\"k\">;</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * YAHOO.util.Event.onFocus is an alias for addFocusListener</span>","<span class=\"c\">         * @method onFocus</span>","<span class=\"c\">         * @see addFocusListener</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">\t\t * @deprecated use YAHOO.util.Event.on and specify \"focusin\" as the event type.</span>","<span class=\"c\">         */</span>","        EU<span class=\"k\">.</span>onFocus <span class=\"k\">=</span> EU<span class=\"k\">.</span>addFocusListener<span class=\"k\">;</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * YAHOO.util.Event.onBlur is an alias for addBlurListener</span>","<span class=\"c\">         * @method onBlur</span>","<span class=\"c\">         * @see addBlurListener</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">\t\t * @deprecated use YAHOO.util.Event.on and specify \"focusout\" as the event type.</span>","<span class=\"c\">         */</span>     ","        EU<span class=\"k\">.</span>onBlur <span class=\"k\">=</span> EU<span class=\"k\">.</span>addBlurListener<span class=\"k\">;</span>","","<span class=\"c\">/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */</span>","","        <span class=\"c\">// Internet Explorer: use the readyState of a defered script.</span>","        <span class=\"c\">// This isolates what appears to be a safe moment to manipulate</span>","        <span class=\"c\">// the DOM prior to when the document's readyState suggests</span>","        <span class=\"c\">// it is safe to do so.</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>EU<span class=\"k\">.</span>isIE<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>self <span class=\"k\">!==</span> self<span class=\"k\">.</span>top<span class=\"k\">)</span> <span class=\"k\">{</span>","                document<span class=\"k\">.</span>onreadystatechange <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>document<span class=\"k\">.</span>readyState <span class=\"k\">==</span> <span class=\"s\">'complete'</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        document<span class=\"k\">.</span>onreadystatechange <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                        EU<span class=\"k\">.</span>_ready<span class=\"k\">();</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span><span class=\"k\">;</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","","                <span class=\"c\">// Process onAvailable/onContentReady items when the </span>","                <span class=\"c\">// DOM is ready.</span>","                YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">.</span>onDOMReady<span class=\"k\">(</span>","                        YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">.</span>_tryPreloadAttach<span class=\"k\">,</span>","                        YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","                ","                <span class=\"k\">var</span> n <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">'p'</span><span class=\"k\">);</span>  ","","                EU<span class=\"k\">.</span>_dri <span class=\"k\">=</span> setInterval<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                    <span class=\"k\">try</span> <span class=\"k\">{</span>","                        <span class=\"c\">// throws an error if doc is not ready</span>","                        n<span class=\"k\">.</span>doScroll<span class=\"k\">(</span><span class=\"s\">'left'</span><span class=\"k\">);</span>","                        clearInterval<span class=\"k\">(</span>EU<span class=\"k\">.</span>_dri<span class=\"k\">);</span>","                        EU<span class=\"k\">.</span>_dri <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                        EU<span class=\"k\">.</span>_ready<span class=\"k\">();</span>","                        n <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span> <span class=\"k\">catch</span> <span class=\"k\">(</span>ex<span class=\"k\">)</span> <span class=\"k\">{</span> ","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span><span class=\"k\">,</span> EU<span class=\"k\">.</span>POLL_INTERVAL<span class=\"k\">);</span> ","            <span class=\"k\">}</span>","","        <span class=\"c\">// The document's readyState in Safari currently will</span>","        <span class=\"c\">// change to loaded/complete before images are loaded.</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>EU<span class=\"k\">.</span>webkit <span class=\"k\">&amp;&amp;</span> EU<span class=\"k\">.</span>webkit <span class=\"k\">&lt;</span> <span class=\"s\">525</span><span class=\"k\">)</span> <span class=\"k\">{</span>","","            EU<span class=\"k\">.</span>_dri <span class=\"k\">=</span> setInterval<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> rs<span class=\"k\">=</span>document<span class=\"k\">.</span>readyState<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">\"loaded\"</span> <span class=\"k\">==</span> rs <span class=\"k\">||</span> <span class=\"s\">\"complete\"</span> <span class=\"k\">==</span> rs<span class=\"k\">)</span> <span class=\"k\">{</span>","                    clearInterval<span class=\"k\">(</span>EU<span class=\"k\">.</span>_dri<span class=\"k\">);</span>","                    EU<span class=\"k\">.</span>_dri <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                    EU<span class=\"k\">.</span>_ready<span class=\"k\">();</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span><span class=\"k\">,</span> EU<span class=\"k\">.</span>POLL_INTERVAL<span class=\"k\">);</span> ","","        <span class=\"c\">// FireFox and Opera: These browsers provide a event for this</span>","        <span class=\"c\">// moment.  The latest WebKit releases now support this event.</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","","            EU<span class=\"k\">.</span>_simpleAdd<span class=\"k\">(</span>document<span class=\"k\">,</span> <span class=\"s\">\"DOMContentLoaded\"</span><span class=\"k\">,</span> EU<span class=\"k\">.</span>_ready<span class=\"k\">);</span>","","        <span class=\"k\">}</span>","        <span class=\"c\">/////////////////////////////////////////////////////////////</span>","","","        EU<span class=\"k\">.</span>_simpleAdd<span class=\"k\">(</span>window<span class=\"k\">,</span> <span class=\"s\">\"load\"</span><span class=\"k\">,</span> EU<span class=\"k\">.</span>_load<span class=\"k\">);</span>","        EU<span class=\"k\">.</span>_simpleAdd<span class=\"k\">(</span>window<span class=\"k\">,</span> <span class=\"s\">\"unload\"</span><span class=\"k\">,</span> EU<span class=\"k\">.</span>_unload<span class=\"k\">);</span>","        EU<span class=\"k\">.</span>_tryPreloadAttach<span class=\"k\">();</span>","    <span class=\"k\">}</span><span class=\"k\">)();</span>","","<span class=\"k\">}</span>","<span class=\"c\">/**</span>","<span class=\"c\"> * EventProvider is designed to be used with YAHOO.augment to wrap </span>","<span class=\"c\"> * CustomEvents in an interface that allows events to be subscribed to </span>","<span class=\"c\"> * and fired by name.  This makes it possible for implementing code to</span>","<span class=\"c\"> * subscribe to an event that either has not been created yet, or will</span>","<span class=\"c\"> * not be created at all.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @Class EventProvider</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>EventProvider <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span> <span class=\"k\">}</span><span class=\"k\">;</span>","","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>EventProvider<span class=\"k\">.</span>prototype <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Private storage of custom events</span>","<span class=\"c\">     * @property __yui_events</span>","<span class=\"c\">     * @type Object[]</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    __yui_events<span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Private storage of custom event subscribers</span>","<span class=\"c\">     * @property __yui_subscribers</span>","<span class=\"c\">     * @type Object[]</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    __yui_subscribers<span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Subscribe to a CustomEvent by event type</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * @method subscribe</span>","<span class=\"c\">     * @param p_type     {string}   the type, or name of the event</span>","<span class=\"c\">     * @param p_fn       {function} the function to exectute when the event fires</span>","<span class=\"c\">     * @param p_obj      {Object}   An object to be passed along when the event </span>","<span class=\"c\">     *                              fires</span>","<span class=\"c\">     * @param overrideContext {boolean}  If true, the obj passed in becomes the </span>","<span class=\"c\">     *                              execution scope of the listener</span>","<span class=\"c\">     */</span>","    subscribe<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>p_type<span class=\"k\">,</span> p_fn<span class=\"k\">,</span> p_obj<span class=\"k\">,</span> overrideContext<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> ce <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events<span class=\"k\">[</span>p_type<span class=\"k\">];</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span>ce<span class=\"k\">)</span> <span class=\"k\">{</span>","            ce<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>p_fn<span class=\"k\">,</span> p_obj<span class=\"k\">,</span> overrideContext<span class=\"k\">);</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>__yui_subscribers <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_subscribers <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","            <span class=\"k\">var</span> subs <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_subscribers<span class=\"k\">;</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span>subs<span class=\"k\">[</span>p_type<span class=\"k\">])</span> <span class=\"k\">{</span>","                subs<span class=\"k\">[</span>p_type<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">[];</span>","            <span class=\"k\">}</span>","            subs<span class=\"k\">[</span>p_type<span class=\"k\">].</span>push<span class=\"k\">(</span>","                <span class=\"k\">{</span> fn<span class=\"k\">:</span> p_fn<span class=\"k\">,</span> obj<span class=\"k\">:</span> p_obj<span class=\"k\">,</span> overrideContext<span class=\"k\">:</span> overrideContext <span class=\"k\">}</span> <span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Unsubscribes one or more listeners the from the specified event</span>","<span class=\"c\">     * @method unsubscribe</span>","<span class=\"c\">     * @param p_type {string}   The type, or name of the event.  If the type</span>","<span class=\"c\">     *                          is not specified, it will attempt to remove</span>","<span class=\"c\">     *                          the listener from all hosted events.</span>","<span class=\"c\">     * @param p_fn   {Function} The subscribed function to unsubscribe, if not</span>","<span class=\"c\">     *                          supplied, all subscribers will be removed.</span>","<span class=\"c\">     * @param p_obj  {Object}   The custom object passed to subscribe.  This is</span>","<span class=\"c\">     *                        optional, but if supplied will be used to</span>","<span class=\"c\">     *                        disambiguate multiple listeners that are the same</span>","<span class=\"c\">     *                        (e.g., you subscribe many object using a function</span>","<span class=\"c\">     *                        that lives on the prototype)</span>","<span class=\"c\">     * @return {boolean} true if the subscriber was found and detached.</span>","<span class=\"c\">     */</span>","    unsubscribe<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>p_type<span class=\"k\">,</span> p_fn<span class=\"k\">,</span> p_obj<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> evts <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>p_type<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> ce <span class=\"k\">=</span> evts<span class=\"k\">[</span>p_type<span class=\"k\">];</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>ce<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> ce<span class=\"k\">.</span>unsubscribe<span class=\"k\">(</span>p_fn<span class=\"k\">,</span> p_obj<span class=\"k\">);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> ret <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i <span class=\"k\">in</span> evts<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>evts<span class=\"k\">,</span> i<span class=\"k\">))</span> <span class=\"k\">{</span>","                    ret <span class=\"k\">=</span> ret <span class=\"k\">&amp;&amp;</span> evts<span class=\"k\">[</span>i<span class=\"k\">].</span>unsubscribe<span class=\"k\">(</span>p_fn<span class=\"k\">,</span> p_obj<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","            <span class=\"k\">return</span> ret<span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Removes all listeners from the specified event.  If the event type</span>","<span class=\"c\">     * is not specified, all listeners from all hosted custom events will</span>","<span class=\"c\">     * be removed.</span>","<span class=\"c\">     * @method unsubscribeAll</span>","<span class=\"c\">     * @param p_type {string}   The type, or name of the event</span>","<span class=\"c\">     */</span>","    unsubscribeAll<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>p_type<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>unsubscribe<span class=\"k\">(</span>p_type<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Creates a new custom event of the specified type.  If a custom event</span>","<span class=\"c\">     * by that name already exists, it will not be re-created.  In either</span>","<span class=\"c\">     * case the custom event is returned. </span>","<span class=\"c\">     *</span>","<span class=\"c\">     * @method createEvent</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * @param p_type {string} the type, or name of the event</span>","<span class=\"c\">     * @param p_config {object} optional config params.  Valid properties are:</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *  &lt;ul&gt;</span>","<span class=\"c\">     *    &lt;li&gt;</span>","<span class=\"c\">     *      scope: defines the default execution scope.  If not defined</span>","<span class=\"c\">     *      the default scope will be this instance.</span>","<span class=\"c\">     *    &lt;/li&gt;</span>","<span class=\"c\">     *    &lt;li&gt;</span>","<span class=\"c\">     *      silent: if true, the custom event will not generate log messages.</span>","<span class=\"c\">     *      This is false by default.</span>","<span class=\"c\">     *    &lt;/li&gt;</span>","<span class=\"c\">     *    &lt;li&gt;</span>","<span class=\"c\">     *      fireOnce: if true, the custom event will only notify subscribers</span>","<span class=\"c\">     *      once regardless of the number of times the event is fired.  In</span>","<span class=\"c\">     *      addition, new subscribers will be executed immediately if the</span>","<span class=\"c\">     *      event has already fired.</span>","<span class=\"c\">     *      This is false by default.</span>","<span class=\"c\">     *    &lt;/li&gt;</span>","<span class=\"c\">     *    &lt;li&gt;</span>","<span class=\"c\">     *      onSubscribeCallback: specifies a callback to execute when the</span>","<span class=\"c\">     *      event has a new subscriber.  This will fire immediately for</span>","<span class=\"c\">     *      each queued subscriber if any exist prior to the creation of</span>","<span class=\"c\">     *      the event.</span>","<span class=\"c\">     *    &lt;/li&gt;</span>","<span class=\"c\">     *  &lt;/ul&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *  @return {CustomEvent} the custom event</span>","<span class=\"c\">     *</span>","<span class=\"c\">     */</span>","    createEvent<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>p_type<span class=\"k\">,</span> p_config<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> opts <span class=\"k\">=</span> p_config <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">,</span>","            events <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events<span class=\"k\">,</span> ce<span class=\"k\">;</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span>events<span class=\"k\">[</span>p_type<span class=\"k\">])</span> <span class=\"k\">{</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","","            ce <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">(</span>p_type<span class=\"k\">,</span> opts<span class=\"k\">.</span>scope <span class=\"k\">||</span> <span class=\"k\">this</span><span class=\"k\">,</span> opts<span class=\"k\">.</span>silent<span class=\"k\">,</span>","                         YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">.</span>FLAT<span class=\"k\">,</span> opts<span class=\"k\">.</span>fireOnce<span class=\"k\">);</span>","","            events<span class=\"k\">[</span>p_type<span class=\"k\">]</span> <span class=\"k\">=</span> ce<span class=\"k\">;</span>","","            <span class=\"k\">if</span> <span class=\"k\">(</span>opts<span class=\"k\">.</span>onSubscribeCallback<span class=\"k\">)</span> <span class=\"k\">{</span>","                ce<span class=\"k\">.</span>subscribeEvent<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>opts<span class=\"k\">.</span>onSubscribeCallback<span class=\"k\">);</span>","            <span class=\"k\">}</span>","","            <span class=\"k\">this</span><span class=\"k\">.</span>__yui_subscribers <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_subscribers <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","            <span class=\"k\">var</span> qs <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_subscribers<span class=\"k\">[</span>p_type<span class=\"k\">];</span>","","            <span class=\"k\">if</span> <span class=\"k\">(</span>qs<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>qs<span class=\"k\">.</span>length<span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","                    ce<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>qs<span class=\"k\">[</span>i<span class=\"k\">].</span>fn<span class=\"k\">,</span> qs<span class=\"k\">[</span>i<span class=\"k\">].</span>obj<span class=\"k\">,</span> qs<span class=\"k\">[</span>i<span class=\"k\">].</span>overrideContext<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> events<span class=\"k\">[</span>p_type<span class=\"k\">];</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","","   <span class=\"c\">/**</span>","<span class=\"c\">     * Fire a custom event by name.  The callback functions will be executed</span>","<span class=\"c\">     * from the scope specified when the event was created, and with the </span>","<span class=\"c\">     * following parameters:</span>","<span class=\"c\">     *   &lt;ul&gt;</span>","<span class=\"c\">     *   &lt;li&gt;The first argument fire() was executed with&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;li&gt;The custom object (if any) that was passed into the subscribe() </span>","<span class=\"c\">     *       method&lt;/li&gt;</span>","<span class=\"c\">     *   &lt;/ul&gt;</span>","<span class=\"c\">     * @method fireEvent</span>","<span class=\"c\">     * @param p_type    {string}  the type, or name of the event</span>","<span class=\"c\">     * @param arguments {Object*} an arbitrary set of parameters to pass to </span>","<span class=\"c\">     *                            the handler.</span>","<span class=\"c\">     * @return {boolean} the return value from CustomEvent.fire</span>","<span class=\"c\">     *                   </span>","<span class=\"c\">     */</span>","    fireEvent<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>p_type<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> ce <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>__yui_events<span class=\"k\">[</span>p_type<span class=\"k\">];</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span>ce<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">var</span> args <span class=\"k\">=</span> <span class=\"k\">[];</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>arguments<span class=\"k\">.</span>length<span class=\"k\">;</span> <span class=\"k\">++</span>i<span class=\"k\">)</span> <span class=\"k\">{</span>","            args<span class=\"k\">.</span>push<span class=\"k\">(</span>arguments<span class=\"k\">[</span>i<span class=\"k\">]);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> ce<span class=\"k\">.</span>fire<span class=\"k\">.</span>apply<span class=\"k\">(</span>ce<span class=\"k\">,</span> args<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns true if the custom event of the provided type has been created</span>","<span class=\"c\">     * with createEvent.</span>","<span class=\"c\">     * @method hasEvent</span>","<span class=\"c\">     * @param type {string} the type, or name of the event</span>","<span class=\"c\">     */</span>","    hasEvent<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>type<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>__yui_events<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>__yui_events<span class=\"k\">[</span>type<span class=\"k\">])</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","    <span class=\"k\">}</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","","    <span class=\"k\">var</span> Event <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">,</span> Lang <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\">* KeyListener is a utility that provides an easy interface for listening for</span>","<span class=\"c\">* keydown/keyup events fired against DOM elements.</span>","<span class=\"c\">* @namespace YAHOO.util</span>","<span class=\"c\">* @class KeyListener</span>","<span class=\"c\">* @constructor</span>","<span class=\"c\">* @param {HTMLElement} attachTo The element or element ID to which the key </span>","<span class=\"c\">*                               event should be attached</span>","<span class=\"c\">* @param {String}      attachTo The element or element ID to which the key</span>","<span class=\"c\">*                               event should be attached</span>","<span class=\"c\">* @param {Object}      keyData  The object literal representing the key(s) </span>","<span class=\"c\">*                               to detect. Possible attributes are </span>","<span class=\"c\">*                               shift(boolean), alt(boolean), ctrl(boolean) </span>","<span class=\"c\">*                               and keys(either an int or an array of ints </span>","<span class=\"c\">*                               representing keycodes).</span>","<span class=\"c\">* @param {Function}    handler  The CustomEvent handler to fire when the </span>","<span class=\"c\">*                               key event is detected</span>","<span class=\"c\">* @param {Object}      handler  An object literal representing the handler. </span>","<span class=\"c\">* @param {String}      event    Optional. The event (keydown or keyup) to </span>","<span class=\"c\">*                               listen for. Defaults automatically to keydown.</span>","<span class=\"c\">*</span>","<span class=\"c\">* @knownissue the \"keypress\" event is completely broken in Safari 2.x and below.</span>","<span class=\"c\">*             the workaround is use \"keydown\" for key listening.  However, if</span>","<span class=\"c\">*             it is desired to prevent the default behavior of the keystroke,</span>","<span class=\"c\">*             that can only be done on the keypress event.  This makes key</span>","<span class=\"c\">*             handling quite ugly.</span>","<span class=\"c\">* @knownissue keydown is also broken in Safari 2.x and below for the ESC key.</span>","<span class=\"c\">*             There currently is no workaround other than choosing another</span>","<span class=\"c\">*             key to listen for.</span>","<span class=\"c\">*/</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>KeyListener <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>attachTo<span class=\"k\">,</span> keyData<span class=\"k\">,</span> handler<span class=\"k\">,</span> event<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">if</span> <span class=\"k\">(!</span>attachTo<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(!</span>keyData<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(!</span>handler<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">}</span> ","    ","    <span class=\"k\">if</span> <span class=\"k\">(!</span>event<span class=\"k\">)</span> <span class=\"k\">{</span>","        event <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>KeyListener<span class=\"k\">.</span>KEYDOWN<span class=\"k\">;</span>","    <span class=\"k\">}</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">    * The CustomEvent fired internally when a key is pressed</span>","<span class=\"c\">    * @event keyEvent</span>","<span class=\"c\">    * @private</span>","<span class=\"c\">    * @param {Object} keyData The object literal representing the key(s) to </span>","<span class=\"c\">    *                         detect. Possible attributes are shift(boolean), </span>","<span class=\"c\">    *                         alt(boolean), ctrl(boolean) and keys(either an </span>","<span class=\"c\">    *                         int or an array of ints representing keycodes).</span>","<span class=\"c\">    */</span>","    <span class=\"k\">var</span> keyEvent <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">(</span><span class=\"s\">\"keyPressed\"</span><span class=\"k\">);</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">    * The CustomEvent fired when the KeyListener is enabled via the enable() </span>","<span class=\"c\">    * function</span>","<span class=\"c\">    * @event enabledEvent</span>","<span class=\"c\">    * @param {Object} keyData The object literal representing the key(s) to </span>","<span class=\"c\">    *                         detect. Possible attributes are shift(boolean), </span>","<span class=\"c\">    *                         alt(boolean), ctrl(boolean) and keys(either an </span>","<span class=\"c\">    *                         int or an array of ints representing keycodes).</span>","<span class=\"c\">    */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>enabledEvent <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">(</span><span class=\"s\">\"enabled\"</span><span class=\"k\">);</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">    * The CustomEvent fired when the KeyListener is disabled via the </span>","<span class=\"c\">    * disable() function</span>","<span class=\"c\">    * @event disabledEvent</span>","<span class=\"c\">    * @param {Object} keyData The object literal representing the key(s) to </span>","<span class=\"c\">    *                         detect. Possible attributes are shift(boolean), </span>","<span class=\"c\">    *                         alt(boolean), ctrl(boolean) and keys(either an </span>","<span class=\"c\">    *                         int or an array of ints representing keycodes).</span>","<span class=\"c\">    */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>disabledEvent <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>CustomEvent<span class=\"k\">(</span><span class=\"s\">\"disabled\"</span><span class=\"k\">);</span>","","    <span class=\"k\">if</span> <span class=\"k\">(</span>Lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>attachTo<span class=\"k\">))</span> <span class=\"k\">{</span>","        attachTo <span class=\"k\">=</span> document<span class=\"k\">.</span>getElementById<span class=\"k\">(</span>attachTo<span class=\"k\">);</span> <span class=\"c\">// No Dom util</span>","    <span class=\"k\">}</span>","","    <span class=\"k\">if</span> <span class=\"k\">(</span>Lang<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>handler<span class=\"k\">))</span> <span class=\"k\">{</span>","        keyEvent<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>handler<span class=\"k\">);</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","        keyEvent<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>handler<span class=\"k\">.</span>fn<span class=\"k\">,</span> handler<span class=\"k\">.</span>scope<span class=\"k\">,</span> handler<span class=\"k\">.</span>correctScope<span class=\"k\">);</span>","    <span class=\"k\">}</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">    * Handles the key event when a key is pressed.</span>","<span class=\"c\">    * @method handleKeyPress</span>","<span class=\"c\">    * @param {DOMEvent} e   The keypress DOM event</span>","<span class=\"c\">    * @param {Object}   obj The DOM event scope object</span>","<span class=\"c\">    * @private</span>","<span class=\"c\">    */</span>","    <span class=\"k\">function</span> handleKeyPress<span class=\"k\">(</span>e<span class=\"k\">,</span> obj<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span> keyData<span class=\"k\">.</span>shift<span class=\"k\">)</span> <span class=\"k\">{</span>  ","            keyData<span class=\"k\">.</span>shift <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span> ","        <span class=\"k\">}</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span> keyData<span class=\"k\">.</span>alt<span class=\"k\">)</span> <span class=\"k\">{</span>    ","            keyData<span class=\"k\">.</span>alt <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span> keyData<span class=\"k\">.</span>ctrl<span class=\"k\">)</span> <span class=\"k\">{</span>","            keyData<span class=\"k\">.</span>ctrl <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"c\">// check held down modifying keys first</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>e<span class=\"k\">.</span>shiftKey <span class=\"k\">==</span> keyData<span class=\"k\">.</span>shift <span class=\"k\">&amp;&amp;</span> ","            e<span class=\"k\">.</span>altKey   <span class=\"k\">==</span> keyData<span class=\"k\">.</span>alt <span class=\"k\">&amp;&amp;</span>","            e<span class=\"k\">.</span>ctrlKey  <span class=\"k\">==</span> keyData<span class=\"k\">.</span>ctrl<span class=\"k\">)</span> <span class=\"k\">{</span> <span class=\"c\">// if we pass this, all modifiers match</span>","            ","            <span class=\"k\">var</span> dataItem<span class=\"k\">,</span> keys <span class=\"k\">=</span> keyData<span class=\"k\">.</span>keys<span class=\"k\">,</span> key<span class=\"k\">;</span>","","            <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isArray<span class=\"k\">(</span>keys<span class=\"k\">))</span> <span class=\"k\">{</span>","                <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span>i<span class=\"k\">&lt;</span>keys<span class=\"k\">.</span>length<span class=\"k\">;</span>i<span class=\"k\">++)</span> <span class=\"k\">{</span>","                    dataItem <span class=\"k\">=</span> keys<span class=\"k\">[</span>i<span class=\"k\">];</span>","                    key <span class=\"k\">=</span> Event<span class=\"k\">.</span>getCharCode<span class=\"k\">(</span>e<span class=\"k\">);</span>","","                    <span class=\"k\">if</span> <span class=\"k\">(</span>dataItem <span class=\"k\">==</span> key<span class=\"k\">)</span> <span class=\"k\">{</span>","                        keyEvent<span class=\"k\">.</span>fire<span class=\"k\">(</span>key<span class=\"k\">,</span> e<span class=\"k\">);</span>","                        <span class=\"k\">break</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                key <span class=\"k\">=</span> Event<span class=\"k\">.</span>getCharCode<span class=\"k\">(</span>e<span class=\"k\">);</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>keys <span class=\"k\">==</span> key <span class=\"k\">)</span> <span class=\"k\">{</span>","                    keyEvent<span class=\"k\">.</span>fire<span class=\"k\">(</span>key<span class=\"k\">,</span> e<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">    * Enables the KeyListener by attaching the DOM event listeners to the </span>","<span class=\"c\">    * target DOM element</span>","<span class=\"c\">    * @method enable</span>","<span class=\"c\">    */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>enable <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span> <span class=\"k\">this</span><span class=\"k\">.</span>enabled<span class=\"k\">)</span> <span class=\"k\">{</span>","            Event<span class=\"k\">.</span>on<span class=\"k\">(</span>attachTo<span class=\"k\">,</span> event<span class=\"k\">,</span> handleKeyPress<span class=\"k\">);</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>enabledEvent<span class=\"k\">.</span>fire<span class=\"k\">(</span>keyData<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"c\">/**</span>","<span class=\"c\">        * Boolean indicating the enabled/disabled state of the Tooltip</span>","<span class=\"c\">        * @property enabled</span>","<span class=\"c\">        * @type Boolean</span>","<span class=\"c\">        */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>enabled <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">    * Disables the KeyListener by removing the DOM event listeners from the </span>","<span class=\"c\">    * target DOM element</span>","<span class=\"c\">    * @method disable</span>","<span class=\"c\">    */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>disable <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>enabled<span class=\"k\">)</span> <span class=\"k\">{</span>","            Event<span class=\"k\">.</span>removeListener<span class=\"k\">(</span>attachTo<span class=\"k\">,</span> event<span class=\"k\">,</span> handleKeyPress<span class=\"k\">);</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>disabledEvent<span class=\"k\">.</span>fire<span class=\"k\">(</span>keyData<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>enabled <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">    * Returns a String representation of the object.</span>","<span class=\"c\">    * @method toString</span>","<span class=\"c\">    * @return {String}  The string representation of the KeyListener</span>","<span class=\"c\">    */</span> ","    <span class=\"k\">this</span><span class=\"k\">.</span>toString <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"s\">\"KeyListener [\"</span> <span class=\"k\">+</span> keyData<span class=\"k\">.</span>keys <span class=\"k\">+</span> <span class=\"s\">\"] \"</span> <span class=\"k\">+</span> attachTo<span class=\"k\">.</span>tagName <span class=\"k\">+</span> ","                <span class=\"k\">(</span>attachTo<span class=\"k\">.</span>id <span class=\"k\">?</span> <span class=\"s\">\"[\"</span> <span class=\"k\">+</span> attachTo<span class=\"k\">.</span>id <span class=\"k\">+</span> <span class=\"s\">\"]\"</span> <span class=\"k\">:</span> <span class=\"s\">\"\"</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"k\">var</span> KeyListener <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>KeyListener<span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Constant representing the DOM \"keydown\" event.</span>","<span class=\"c\"> * @property YAHOO.util.KeyListener.KEYDOWN</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @final</span>","<span class=\"c\"> * @type String</span>","<span class=\"c\"> */</span>","KeyListener<span class=\"k\">.</span>KEYDOWN <span class=\"k\">=</span> <span class=\"s\">\"keydown\"</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Constant representing the DOM \"keyup\" event.</span>","<span class=\"c\"> * @property YAHOO.util.KeyListener.KEYUP</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @final</span>","<span class=\"c\"> * @type String</span>","<span class=\"c\"> */</span>","KeyListener<span class=\"k\">.</span>KEYUP <span class=\"k\">=</span> <span class=\"s\">\"keyup\"</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * keycode constants for a subset of the special keys</span>","<span class=\"c\"> * @property KEY</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @final</span>","<span class=\"c\"> */</span>","KeyListener<span class=\"k\">.</span>KEY <span class=\"k\">=</span> <span class=\"k\">{</span>","    ALT          <span class=\"k\">:</span> <span class=\"s\">18</span><span class=\"k\">,</span>","    BACK_SPACE   <span class=\"k\">:</span> <span class=\"s\">8</span><span class=\"k\">,</span>","    CAPS_LOCK    <span class=\"k\">:</span> <span class=\"s\">20</span><span class=\"k\">,</span>","    CONTROL      <span class=\"k\">:</span> <span class=\"s\">17</span><span class=\"k\">,</span>","    DELETE       <span class=\"k\">:</span> <span class=\"s\">46</span><span class=\"k\">,</span>","    DOWN         <span class=\"k\">:</span> <span class=\"s\">40</span><span class=\"k\">,</span>","    END          <span class=\"k\">:</span> <span class=\"s\">35</span><span class=\"k\">,</span>","    ENTER        <span class=\"k\">:</span> <span class=\"s\">13</span><span class=\"k\">,</span>","    ESCAPE       <span class=\"k\">:</span> <span class=\"s\">27</span><span class=\"k\">,</span>","    HOME         <span class=\"k\">:</span> <span class=\"s\">36</span><span class=\"k\">,</span>","    LEFT         <span class=\"k\">:</span> <span class=\"s\">37</span><span class=\"k\">,</span>","    META         <span class=\"k\">:</span> <span class=\"s\">224</span><span class=\"k\">,</span>","    NUM_LOCK     <span class=\"k\">:</span> <span class=\"s\">144</span><span class=\"k\">,</span>","    PAGE_DOWN    <span class=\"k\">:</span> <span class=\"s\">34</span><span class=\"k\">,</span>","    PAGE_UP      <span class=\"k\">:</span> <span class=\"s\">33</span><span class=\"k\">,</span> ","    PAUSE        <span class=\"k\">:</span> <span class=\"s\">19</span><span class=\"k\">,</span>","    PRINTSCREEN  <span class=\"k\">:</span> <span class=\"s\">44</span><span class=\"k\">,</span>","    RIGHT        <span class=\"k\">:</span> <span class=\"s\">39</span><span class=\"k\">,</span>","    SCROLL_LOCK  <span class=\"k\">:</span> <span class=\"s\">145</span><span class=\"k\">,</span>","    SHIFT        <span class=\"k\">:</span> <span class=\"s\">16</span><span class=\"k\">,</span>","    SPACE        <span class=\"k\">:</span> <span class=\"s\">32</span><span class=\"k\">,</span>","    TAB          <span class=\"k\">:</span> <span class=\"s\">9</span><span class=\"k\">,</span>","    UP           <span class=\"k\">:</span> <span class=\"s\">38</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"k\">}</span><span class=\"k\">)();</span>","YAHOO<span class=\"k\">.</span>register<span class=\"k\">(</span><span class=\"s\">\"event\"</span><span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Event<span class=\"k\">,</span> <span class=\"k\">{</span>version<span class=\"k\">:</span> <span class=\"s\">\"2.8.0r4\"</span><span class=\"k\">,</span> build<span class=\"k\">:</span> <span class=\"s\">\"2449\"</span><span class=\"k\">}</span><span class=\"k\">);</span>"];
_$jscoverage['build/event/event.js'][31]++;
YAHOO.util.CustomEvent = (function (type, context, silent, signature, fireOnce) {
  _$jscoverage['build/event/event.js'][38]++;
  this.type = type;
  _$jscoverage['build/event/event.js'][45]++;
  this.scope = (context || window);
  _$jscoverage['build/event/event.js'][53]++;
  this.silent = silent;
  _$jscoverage['build/event/event.js'][64]++;
  this.fireOnce = fireOnce;
  _$jscoverage['build/event/event.js'][72]++;
  this.fired = false;
  _$jscoverage['build/event/event.js'][80]++;
  this.firedWith = null;
  _$jscoverage['build/event/event.js'][104]++;
  this.signature = (signature || YAHOO.util.CustomEvent.LIST);
  _$jscoverage['build/event/event.js'][111]++;
  this.subscribers = [];
  _$jscoverage['build/event/event.js'][113]++;
  if ((! this.silent)) {
  }
  _$jscoverage['build/event/event.js'][116]++;
  var onsubscribeType = "_YUICEOnSubscribe";
  _$jscoverage['build/event/event.js'][120]++;
  if ((type !== onsubscribeType)) {
    _$jscoverage['build/event/event.js'][137]++;
    this.subscribeEvent = new (YAHOO.util.CustomEvent)(onsubscribeType, this, true);
  }
  _$jscoverage['build/event/event.js'][150]++;
  this.lastError = null;
});
_$jscoverage['build/event/event.js'][161]++;
YAHOO.util.CustomEvent.LIST = 0;
_$jscoverage['build/event/event.js'][171]++;
YAHOO.util.CustomEvent.FLAT = 1;
_$jscoverage['build/event/event.js'][173]++;
YAHOO.util.CustomEvent.prototype = {subscribe: (function (fn, obj, overrideContext) {
  _$jscoverage['build/event/event.js'][185]++;
  if ((! fn)) {
    _$jscoverage['build/event/event.js'][186]++;
    throw new Error(("Invalid callback for subscriber to '" + this.type + "'"));
  }
  _$jscoverage['build/event/event.js'][189]++;
  if (this.subscribeEvent) {
    _$jscoverage['build/event/event.js'][190]++;
    this.subscribeEvent.fire(fn, obj, overrideContext);
  }
  _$jscoverage['build/event/event.js'][193]++;
  var s = new (YAHOO.util.Subscriber)(fn, obj, overrideContext);
  _$jscoverage['build/event/event.js'][195]++;
  if ((this.fireOnce && this.fired)) {
    _$jscoverage['build/event/event.js'][196]++;
    this.notify(s, this.firedWith);
  }
  else {
    _$jscoverage['build/event/event.js'][198]++;
    this.subscribers.push(s);
  }
}), unsubscribe: (function (fn, obj) {
  _$jscoverage['build/event/event.js'][216]++;
  if ((! fn)) {
    _$jscoverage['build/event/event.js'][217]++;
    return this.unsubscribeAll();
  }
  _$jscoverage['build/event/event.js'][220]++;
  var found = false;
  _$jscoverage['build/event/event.js'][221]++;
  for (var i = 0, len = this.subscribers.length; (i < len); (++i)) {
    _$jscoverage['build/event/event.js'][222]++;
    var s = this.subscribers[i];
    _$jscoverage['build/event/event.js'][223]++;
    if ((s && s.contains(fn, obj))) {
      _$jscoverage['build/event/event.js'][224]++;
      this._delete(i);
      _$jscoverage['build/event/event.js'][225]++;
      found = true;
    }
}
  _$jscoverage['build/event/event.js'][229]++;
  return found;
}), fire: (function () {
  _$jscoverage['build/event/event.js'][250]++;
  this.lastError = null;
  _$jscoverage['build/event/event.js'][252]++;
  var errors = [], len = this.subscribers.length;
  _$jscoverage['build/event/event.js'][256]++;
  var args = [].slice.call(arguments, 0), ret = true, i, rebuild = false;
  _$jscoverage['build/event/event.js'][258]++;
  if (this.fireOnce) {
    _$jscoverage['build/event/event.js'][259]++;
    if (this.fired) {
      _$jscoverage['build/event/event.js'][260]++;
      return true;
    }
    else {
      _$jscoverage['build/event/event.js'][262]++;
      this.firedWith = args;
    }
  }
  _$jscoverage['build/event/event.js'][266]++;
  this.fired = true;
  _$jscoverage['build/event/event.js'][268]++;
  if (((! len) && this.silent)) {
    _$jscoverage['build/event/event.js'][269]++;
    return true;
  }
  _$jscoverage['build/event/event.js'][272]++;
  if ((! this.silent)) {
  }
  _$jscoverage['build/event/event.js'][277]++;
  var subs = this.subscribers.slice();
  _$jscoverage['build/event/event.js'][279]++;
  for (i = 0; (i < len); (++i)) {
    _$jscoverage['build/event/event.js'][280]++;
    var s = subs[i];
    _$jscoverage['build/event/event.js'][281]++;
    if ((! s)) {
      _$jscoverage['build/event/event.js'][282]++;
      rebuild = true;
    }
    else {
      _$jscoverage['build/event/event.js'][285]++;
      ret = this.notify(s, args);
      _$jscoverage['build/event/event.js'][287]++;
      if ((false === ret)) {
        _$jscoverage['build/event/event.js'][288]++;
        if ((! this.silent)) {
        }
        _$jscoverage['build/event/event.js'][291]++;
        break;
      }
    }
}
  _$jscoverage['build/event/event.js'][296]++;
  return (ret !== false);
}), notify: (function (s, args) {
  _$jscoverage['build/event/event.js'][301]++;
  var ret, param = null, scope = s.getScope(this.scope), throwErrors = YAHOO.util.Event.throwErrors;
  _$jscoverage['build/event/event.js'][304]++;
  if ((! this.silent)) {
  }
  _$jscoverage['build/event/event.js'][307]++;
  if ((this.signature == YAHOO.util.CustomEvent.FLAT)) {
    _$jscoverage['build/event/event.js'][309]++;
    if ((args.length > 0)) {
      _$jscoverage['build/event/event.js'][310]++;
      param = args[0];
    }
    _$jscoverage['build/event/event.js'][313]++;
    try {
      _$jscoverage['build/event/event.js'][314]++;
      ret = s.fn.call(scope, param, s.obj);
    }
    catch (e) {
      _$jscoverage['build/event/event.js'][316]++;
      this.lastError = e;
      _$jscoverage['build/event/event.js'][318]++;
      if (throwErrors) {
        _$jscoverage['build/event/event.js'][319]++;
        throw e;
      }
    }
  }
  else {
    _$jscoverage['build/event/event.js'][323]++;
    try {
      _$jscoverage['build/event/event.js'][324]++;
      ret = s.fn.call(scope, this.type, args, s.obj);
    }
    catch (ex) {
      _$jscoverage['build/event/event.js'][326]++;
      this.lastError = ex;
      _$jscoverage['build/event/event.js'][327]++;
      if (throwErrors) {
        _$jscoverage['build/event/event.js'][328]++;
        throw ex;
      }
    }
  }
  _$jscoverage['build/event/event.js'][333]++;
  return ret;
}), unsubscribeAll: (function () {
  _$jscoverage['build/event/event.js'][342]++;
  var l = this.subscribers.length, i;
  _$jscoverage['build/event/event.js'][343]++;
  for (i = (l - 1); (i > -1); (i--)) {
    _$jscoverage['build/event/event.js'][344]++;
    this._delete(i);
}
  _$jscoverage['build/event/event.js'][347]++;
  this.subscribers = [];
  _$jscoverage['build/event/event.js'][349]++;
  return l;
}), _delete: (function (index) {
  _$jscoverage['build/event/event.js'][357]++;
  var s = this.subscribers[index];
  _$jscoverage['build/event/event.js'][358]++;
  if (s) {
    _$jscoverage['build/event/event.js'][359]++;
    (delete s.fn);
    _$jscoverage['build/event/event.js'][360]++;
    (delete s.obj);
  }
  _$jscoverage['build/event/event.js'][364]++;
  this.subscribers.splice(index, 1);
}), toString: (function () {
  _$jscoverage['build/event/event.js'][371]++;
  return ("CustomEvent: " + "'" + this.type + "', " + "context: " + this.scope);
})};
_$jscoverage['build/event/event.js'][388]++;
YAHOO.util.Subscriber = (function (fn, obj, overrideContext) {
  _$jscoverage['build/event/event.js'][395]++;
  this.fn = fn;
  _$jscoverage['build/event/event.js'][403]++;
  this.obj = (YAHOO.lang.isUndefined(obj)? null: obj);
  _$jscoverage['build/event/event.js'][414]++;
  this.overrideContext = overrideContext;
});
_$jscoverage['build/event/event.js'][426]++;
YAHOO.util.Subscriber.prototype.getScope = (function (defaultScope) {
  _$jscoverage['build/event/event.js'][427]++;
  if (this.overrideContext) {
    _$jscoverage['build/event/event.js'][428]++;
    if ((this.overrideContext === true)) {
      _$jscoverage['build/event/event.js'][429]++;
      return this.obj;
    }
    else {
      _$jscoverage['build/event/event.js'][431]++;
      return this.overrideContext;
    }
  }
  _$jscoverage['build/event/event.js'][434]++;
  return defaultScope;
});
_$jscoverage['build/event/event.js'][447]++;
YAHOO.util.Subscriber.prototype.contains = (function (fn, obj) {
  _$jscoverage['build/event/event.js'][448]++;
  if (obj) {
    _$jscoverage['build/event/event.js'][449]++;
    return ((this.fn == fn) && (this.obj == obj));
  }
  else {
    _$jscoverage['build/event/event.js'][451]++;
    return (this.fn == fn);
  }
});
_$jscoverage['build/event/event.js'][458]++;
YAHOO.util.Subscriber.prototype.toString = (function () {
  _$jscoverage['build/event/event.js'][459]++;
  return ("Subscriber { obj: " + this.obj + ", overrideContext: " + (this.overrideContext || "no") + " }");
});
_$jscoverage['build/event/event.js'][477]++;
if ((! YAHOO.util.Event)) {
  _$jscoverage['build/event/event.js'][487]++;
  YAHOO.util.Event = (function () {
  _$jscoverage['build/event/event.js'][496]++;
  var loadComplete = false, listeners = [], unloadListeners = [], retryCount = 0, onAvailStack = [], counter = 0, webkitKeymap = {63232: 38, 63233: 40, 63234: 37, 63235: 39, 63276: 33, 63277: 34, 25: 9}, isIE = YAHOO.env.ua.ie, FOCUSIN = "focusin", FOCUSOUT = "focusout";
  _$jscoverage['build/event/event.js'][570]++;
  return ({POLL_RETRYS: 500, POLL_INTERVAL: 40, EL: 0, TYPE: 1, FN: 2, WFN: 3, UNLOAD_OBJ: 3, ADJ_SCOPE: 4, OBJ: 5, OVERRIDE: 6, CAPTURE: 7, lastError: null, isSafari: YAHOO.env.ua.webkit, webkit: YAHOO.env.ua.webkit, isIE: isIE, _interval: null, _dri: null, _specialTypes: {focusin: (isIE? "focusin": "focus"), focusout: (isIE? "focusout": "blur")}, DOMReady: false, throwErrors: false, startInterval: (function () {
  _$jscoverage['build/event/event.js'][771]++;
  if ((! this._interval)) {
    _$jscoverage['build/event/event.js'][775]++;
    this._interval = YAHOO.lang.later(this.POLL_INTERVAL, this, this._tryPreloadAttach, null, true);
  }
}), onAvailable: (function (id, fn, obj, overrideContext, checkContent) {
  _$jscoverage['build/event/event.js'][805]++;
  var a = (YAHOO.lang.isString(id)? [id]: id);
  _$jscoverage['build/event/event.js'][807]++;
  for (var i = 0; (i < a.length); (i = (i + 1))) {
    _$jscoverage['build/event/event.js'][808]++;
    onAvailStack.push({id: a[i], fn: fn, obj: obj, overrideContext: overrideContext, checkReady: checkContent});
}
  _$jscoverage['build/event/event.js'][815]++;
  retryCount = this.POLL_RETRYS;
  _$jscoverage['build/event/event.js'][817]++;
  this.startInterval();
}), onContentReady: (function (id, fn, obj, overrideContext) {
  _$jscoverage['build/event/event.js'][841]++;
  this.onAvailable(id, fn, obj, overrideContext, true);
}), onDOMReady: (function () {
  _$jscoverage['build/event/event.js'][878]++;
  this.DOMReadyEvent.subscribe.apply(this.DOMReadyEvent, arguments);
}), _addListener: (function (el, sType, fn, obj, overrideContext, bCapture) {
  _$jscoverage['build/event/event.js'][908]++;
  if (((! fn) || (! fn.call))) {
    _$jscoverage['build/event/event.js'][909]++;
    return false;
  }
  _$jscoverage['build/event/event.js'][913]++;
  if (this._isValidCollection(el)) {
    _$jscoverage['build/event/event.js'][914]++;
    var ok = true;
    _$jscoverage['build/event/event.js'][915]++;
    for (var i = 0, len = el.length; (i < len); (++i)) {
      _$jscoverage['build/event/event.js'][916]++;
      ok = (this.on(el[i], sType, fn, obj, overrideContext) && ok);
}
    _$jscoverage['build/event/event.js'][922]++;
    return ok;
  }
  else {
    _$jscoverage['build/event/event.js'][924]++;
    if (YAHOO.lang.isString(el)) {
      _$jscoverage['build/event/event.js'][925]++;
      var oEl = this.getEl(el);
      _$jscoverage['build/event/event.js'][933]++;
      if (oEl) {
        _$jscoverage['build/event/event.js'][934]++;
        el = oEl;
      }
      else {
        _$jscoverage['build/event/event.js'][937]++;
        this.onAvailable(el, (function () {
  _$jscoverage['build/event/event.js'][938]++;
  YAHOO.util.Event._addListener(el, sType, fn, obj, overrideContext, bCapture);
}));
        _$jscoverage['build/event/event.js'][941]++;
        return true;
      }
    }
  }
  _$jscoverage['build/event/event.js'][947]++;
  if ((! el)) {
    _$jscoverage['build/event/event.js'][948]++;
    return false;
  }
  _$jscoverage['build/event/event.js'][955]++;
  if ((("unload" == sType) && (obj !== this))) {
    _$jscoverage['build/event/event.js'][956]++;
    unloadListeners[unloadListeners.length] = [el, sType, fn, obj, overrideContext];
    _$jscoverage['build/event/event.js'][958]++;
    return true;
  }
  _$jscoverage['build/event/event.js'][965]++;
  var context = el;
  _$jscoverage['build/event/event.js'][966]++;
  if (overrideContext) {
    _$jscoverage['build/event/event.js'][967]++;
    if ((overrideContext === true)) {
      _$jscoverage['build/event/event.js'][968]++;
      context = obj;
    }
    else {
      _$jscoverage['build/event/event.js'][970]++;
      context = overrideContext;
    }
  }
  _$jscoverage['build/event/event.js'][976]++;
  var wrappedFn = (function (e) {
  _$jscoverage['build/event/event.js'][977]++;
  return fn.call(context, YAHOO.util.Event.getEvent(e, el), obj);
});
  _$jscoverage['build/event/event.js'][981]++;
  var li = [el, sType, fn, wrappedFn, context, obj, overrideContext, bCapture];
  _$jscoverage['build/event/event.js'][982]++;
  var index = listeners.length;
  _$jscoverage['build/event/event.js'][984]++;
  listeners[index] = li;
  _$jscoverage['build/event/event.js'][986]++;
  try {
    _$jscoverage['build/event/event.js'][987]++;
    this._simpleAdd(el, sType, wrappedFn, bCapture);
  }
  catch (ex) {
    _$jscoverage['build/event/event.js'][991]++;
    this.lastError = ex;
    _$jscoverage['build/event/event.js'][992]++;
    this.removeListener(el, sType, fn);
    _$jscoverage['build/event/event.js'][993]++;
    return false;
  }
  _$jscoverage['build/event/event.js'][996]++;
  return true;
}), _getType: (function (type) {
  _$jscoverage['build/event/event.js'][1012]++;
  return (this._specialTypes[type] || type);
}), addListener: (function (el, sType, fn, obj, overrideContext) {
  _$jscoverage['build/event/event.js'][1041]++;
  var capture = ((((sType == FOCUSIN) || (sType == FOCUSOUT)) && (! YAHOO.env.ua.ie))? true: false);
  _$jscoverage['build/event/event.js'][1043]++;
  return this._addListener(el, this._getType(sType), fn, obj, overrideContext, capture);
}), addFocusListener: (function (el, fn, obj, overrideContext) {
  _$jscoverage['build/event/event.js'][1072]++;
  return this.on(el, FOCUSIN, fn, obj, overrideContext);
}), removeFocusListener: (function (el, fn) {
  _$jscoverage['build/event/event.js'][1095]++;
  return this.removeListener(el, FOCUSIN, fn);
}), addBlurListener: (function (el, fn, obj, overrideContext) {
  _$jscoverage['build/event/event.js'][1123]++;
  return this.on(el, FOCUSOUT, fn, obj, overrideContext);
}), removeBlurListener: (function (el, fn) {
  _$jscoverage['build/event/event.js'][1145]++;
  return this.removeListener(el, FOCUSOUT, fn);
}), removeListener: (function (el, sType, fn) {
  _$jscoverage['build/event/event.js'][1165]++;
  var i, len, li;
  _$jscoverage['build/event/event.js'][1167]++;
  sType = this._getType(sType);
  _$jscoverage['build/event/event.js'][1170]++;
  if (((typeof el) == "string")) {
    _$jscoverage['build/event/event.js'][1171]++;
    el = this.getEl(el);
  }
  else {
    _$jscoverage['build/event/event.js'][1173]++;
    if (this._isValidCollection(el)) {
      _$jscoverage['build/event/event.js'][1174]++;
      var ok = true;
      _$jscoverage['build/event/event.js'][1175]++;
      for (i = (el.length - 1); (i > -1); (i--)) {
        _$jscoverage['build/event/event.js'][1176]++;
        ok = (this.removeListener(el[i], sType, fn) && ok);
}
      _$jscoverage['build/event/event.js'][1178]++;
      return ok;
    }
  }
  _$jscoverage['build/event/event.js'][1181]++;
  if (((! fn) || (! fn.call))) {
    _$jscoverage['build/event/event.js'][1183]++;
    return this.purgeElement(el, false, sType);
  }
  _$jscoverage['build/event/event.js'][1186]++;
  if (("unload" == sType)) {
    _$jscoverage['build/event/event.js'][1188]++;
    for (i = (unloadListeners.length - 1); (i > -1); (i--)) {
      _$jscoverage['build/event/event.js'][1189]++;
      li = unloadListeners[i];
      _$jscoverage['build/event/event.js'][1190]++;
      if ((li && (li[0] == el) && (li[1] == sType) && (li[2] == fn))) {
        _$jscoverage['build/event/event.js'][1194]++;
        unloadListeners.splice(i, 1);
        _$jscoverage['build/event/event.js'][1196]++;
        return true;
      }
}
    _$jscoverage['build/event/event.js'][1200]++;
    return false;
  }
  _$jscoverage['build/event/event.js'][1203]++;
  var cacheItem = null;
  _$jscoverage['build/event/event.js'][1208]++;
  var index = arguments[3];
  _$jscoverage['build/event/event.js'][1210]++;
  if (("undefined" === (typeof index))) {
    _$jscoverage['build/event/event.js'][1211]++;
    index = this._getCacheIndex(listeners, el, sType, fn);
  }
  _$jscoverage['build/event/event.js'][1214]++;
  if ((index >= 0)) {
    _$jscoverage['build/event/event.js'][1215]++;
    cacheItem = listeners[index];
  }
  _$jscoverage['build/event/event.js'][1218]++;
  if (((! el) || (! cacheItem))) {
    _$jscoverage['build/event/event.js'][1219]++;
    return false;
  }
  _$jscoverage['build/event/event.js'][1223]++;
  var bCapture = ((cacheItem[this.CAPTURE] === true)? true: false);
  _$jscoverage['build/event/event.js'][1225]++;
  try {
    _$jscoverage['build/event/event.js'][1226]++;
    this._simpleRemove(el, sType, cacheItem[this.WFN], bCapture);
  }
  catch (ex) {
    _$jscoverage['build/event/event.js'][1228]++;
    this.lastError = ex;
    _$jscoverage['build/event/event.js'][1229]++;
    return false;
  }
  _$jscoverage['build/event/event.js'][1233]++;
  (delete listeners[index][this.WFN]);
  _$jscoverage['build/event/event.js'][1234]++;
  (delete listeners[index][this.FN]);
  _$jscoverage['build/event/event.js'][1235]++;
  listeners.splice(index, 1);
  _$jscoverage['build/event/event.js'][1238]++;
  return true;
}), getTarget: (function (ev, resolveTextNode) {
  _$jscoverage['build/event/event.js'][1256]++;
  var t = (ev.target || ev.srcElement);
  _$jscoverage['build/event/event.js'][1257]++;
  return this.resolveTextNode(t);
}), resolveTextNode: (function (n) {
  _$jscoverage['build/event/event.js'][1270]++;
  try {
    _$jscoverage['build/event/event.js'][1271]++;
    if ((n && (3 == n.nodeType))) {
      _$jscoverage['build/event/event.js'][1272]++;
      return n.parentNode;
    }
  }
  catch (e) {
  }
  _$jscoverage['build/event/event.js'][1276]++;
  return n;
}), getPageX: (function (ev) {
  _$jscoverage['build/event/event.js'][1287]++;
  var x = ev.pageX;
  _$jscoverage['build/event/event.js'][1288]++;
  if (((! x) && (0 !== x))) {
    _$jscoverage['build/event/event.js'][1289]++;
    x = (ev.clientX || 0);
    _$jscoverage['build/event/event.js'][1291]++;
    if (this.isIE) {
      _$jscoverage['build/event/event.js'][1292]++;
      x += this._getScrollLeft();
    }
  }
  _$jscoverage['build/event/event.js'][1296]++;
  return x;
}), getPageY: (function (ev) {
  _$jscoverage['build/event/event.js'][1307]++;
  var y = ev.pageY;
  _$jscoverage['build/event/event.js'][1308]++;
  if (((! y) && (0 !== y))) {
    _$jscoverage['build/event/event.js'][1309]++;
    y = (ev.clientY || 0);
    _$jscoverage['build/event/event.js'][1311]++;
    if (this.isIE) {
      _$jscoverage['build/event/event.js'][1312]++;
      y += this._getScrollTop();
    }
  }
  _$jscoverage['build/event/event.js'][1317]++;
  return y;
}), getXY: (function (ev) {
  _$jscoverage['build/event/event.js'][1328]++;
  return [this.getPageX(ev), this.getPageY(ev)];
}), getRelatedTarget: (function (ev) {
  _$jscoverage['build/event/event.js'][1339]++;
  var t = ev.relatedTarget;
  _$jscoverage['build/event/event.js'][1340]++;
  if ((! t)) {
    _$jscoverage['build/event/event.js'][1341]++;
    if ((ev.type == "mouseout")) {
      _$jscoverage['build/event/event.js'][1342]++;
      t = ev.toElement;
    }
    else {
      _$jscoverage['build/event/event.js'][1343]++;
      if ((ev.type == "mouseover")) {
        _$jscoverage['build/event/event.js'][1344]++;
        t = ev.fromElement;
      }
    }
  }
  _$jscoverage['build/event/event.js'][1348]++;
  return this.resolveTextNode(t);
}), getTime: (function (ev) {
  _$jscoverage['build/event/event.js'][1360]++;
  if ((! ev.time)) {
    _$jscoverage['build/event/event.js'][1361]++;
    var t = new Date().getTime();
    _$jscoverage['build/event/event.js'][1362]++;
    try {
      _$jscoverage['build/event/event.js'][1363]++;
      ev.time = t;
    }
    catch (ex) {
      _$jscoverage['build/event/event.js'][1365]++;
      this.lastError = ex;
      _$jscoverage['build/event/event.js'][1366]++;
      return t;
    }
  }
  _$jscoverage['build/event/event.js'][1370]++;
  return ev.time;
}), stopEvent: (function (ev) {
  _$jscoverage['build/event/event.js'][1380]++;
  this.stopPropagation(ev);
  _$jscoverage['build/event/event.js'][1381]++;
  this.preventDefault(ev);
}), stopPropagation: (function (ev) {
  _$jscoverage['build/event/event.js'][1391]++;
  if (ev.stopPropagation) {
    _$jscoverage['build/event/event.js'][1392]++;
    ev.stopPropagation();
  }
  else {
    _$jscoverage['build/event/event.js'][1394]++;
    ev.cancelBubble = true;
  }
}), preventDefault: (function (ev) {
  _$jscoverage['build/event/event.js'][1405]++;
  if (ev.preventDefault) {
    _$jscoverage['build/event/event.js'][1406]++;
    ev.preventDefault();
  }
  else {
    _$jscoverage['build/event/event.js'][1408]++;
    ev.returnValue = false;
  }
}), getEvent: (function (e, boundEl) {
  _$jscoverage['build/event/event.js'][1425]++;
  var ev = (e || window.event);
  _$jscoverage['build/event/event.js'][1427]++;
  if ((! ev)) {
    _$jscoverage['build/event/event.js'][1428]++;
    var c = this.getEvent.caller;
    _$jscoverage['build/event/event.js'][1429]++;
    while (c) {
      _$jscoverage['build/event/event.js'][1430]++;
      ev = c.arguments[0];
      _$jscoverage['build/event/event.js'][1431]++;
      if ((ev && (Event == ev.constructor))) {
        _$jscoverage['build/event/event.js'][1432]++;
        break;
      }
      _$jscoverage['build/event/event.js'][1434]++;
      c = c.caller;
}
  }
  _$jscoverage['build/event/event.js'][1438]++;
  return ev;
}), getCharCode: (function (ev) {
  _$jscoverage['build/event/event.js'][1449]++;
  var code = (ev.keyCode || ev.charCode || 0);
  _$jscoverage['build/event/event.js'][1452]++;
  if ((YAHOO.env.ua.webkit && (code in webkitKeymap))) {
    _$jscoverage['build/event/event.js'][1453]++;
    code = webkitKeymap[code];
  }
  _$jscoverage['build/event/event.js'][1455]++;
  return code;
}), _getCacheIndex: (function (a, el, sType, fn) {
  _$jscoverage['build/event/event.js'][1466]++;
  for (var i = 0, l = a.length; (i < l); (i = (i + 1))) {
    _$jscoverage['build/event/event.js'][1467]++;
    var li = a[i];
    _$jscoverage['build/event/event.js'][1468]++;
    if ((li && (li[this.FN] == fn) && (li[this.EL] == el) && (li[this.TYPE] == sType))) {
      _$jscoverage['build/event/event.js'][1472]++;
      return i;
    }
}
  _$jscoverage['build/event/event.js'][1476]++;
  return -1;
}), generateId: (function (el) {
  _$jscoverage['build/event/event.js'][1488]++;
  var id = el.id;
  _$jscoverage['build/event/event.js'][1490]++;
  if ((! id)) {
    _$jscoverage['build/event/event.js'][1491]++;
    id = ("yuievtautoid-" + counter);
    _$jscoverage['build/event/event.js'][1492]++;
    (++counter);
    _$jscoverage['build/event/event.js'][1493]++;
    el.id = id;
  }
  _$jscoverage['build/event/event.js'][1496]++;
  return id;
}), _isValidCollection: (function (o) {
  _$jscoverage['build/event/event.js'][1513]++;
  try {
    _$jscoverage['build/event/event.js'][1514]++;
    return (o && ((typeof o) !== "string") && o.length && (! o.tagName) && (! o.alert) && ((typeof o[0]) !== "undefined"));
  }
  catch (ex) {
    _$jscoverage['build/event/event.js'][1521]++;
    return false;
  }
}), elCache: {}, getEl: (function (id) {
  _$jscoverage['build/event/event.js'][1545]++;
  return (((typeof id) === "string")? document.getElementById(id): id);
}), clearCache: (function () {
}), DOMReadyEvent: new (YAHOO.util.CustomEvent)("DOMReady", YAHOO, 0, 0, 1), _load: (function (e) {
  _$jscoverage['build/event/event.js'][1571]++;
  if ((! loadComplete)) {
    _$jscoverage['build/event/event.js'][1572]++;
    loadComplete = true;
    _$jscoverage['build/event/event.js'][1573]++;
    var EU = YAHOO.util.Event;
    _$jscoverage['build/event/event.js'][1576]++;
    EU._ready();
    _$jscoverage['build/event/event.js'][1582]++;
    EU._tryPreloadAttach();
  }
}), _ready: (function (e) {
  _$jscoverage['build/event/event.js'][1595]++;
  var EU = YAHOO.util.Event;
  _$jscoverage['build/event/event.js'][1596]++;
  if ((! EU.DOMReady)) {
    _$jscoverage['build/event/event.js'][1597]++;
    EU.DOMReady = true;
    _$jscoverage['build/event/event.js'][1600]++;
    EU.DOMReadyEvent.fire();
    _$jscoverage['build/event/event.js'][1603]++;
    EU._simpleRemove(document, "DOMContentLoaded", EU._ready);
  }
}), _tryPreloadAttach: (function () {
  _$jscoverage['build/event/event.js'][1617]++;
  if ((onAvailStack.length === 0)) {
    _$jscoverage['build/event/event.js'][1618]++;
    retryCount = 0;
    _$jscoverage['build/event/event.js'][1619]++;
    if (this._interval) {
      _$jscoverage['build/event/event.js'][1621]++;
      this._interval.cancel();
      _$jscoverage['build/event/event.js'][1622]++;
      this._interval = null;
    }
    _$jscoverage['build/event/event.js'][1624]++;
    return;
  }
  _$jscoverage['build/event/event.js'][1627]++;
  if (this.locked) {
    _$jscoverage['build/event/event.js'][1628]++;
    return;
  }
  _$jscoverage['build/event/event.js'][1631]++;
  if (this.isIE) {
    _$jscoverage['build/event/event.js'][1635]++;
    if ((! this.DOMReady)) {
      _$jscoverage['build/event/event.js'][1636]++;
      this.startInterval();
      _$jscoverage['build/event/event.js'][1637]++;
      return;
    }
  }
  _$jscoverage['build/event/event.js'][1641]++;
  this.locked = true;
  _$jscoverage['build/event/event.js'][1648]++;
  var tryAgain = (! loadComplete);
  _$jscoverage['build/event/event.js'][1649]++;
  if ((! tryAgain)) {
    _$jscoverage['build/event/event.js'][1650]++;
    tryAgain = ((retryCount > 0) && (onAvailStack.length > 0));
  }
  _$jscoverage['build/event/event.js'][1654]++;
  var notAvail = [];
  _$jscoverage['build/event/event.js'][1656]++;
  var executeItem = (function (el, item) {
  _$jscoverage['build/event/event.js'][1657]++;
  var context = el;
  _$jscoverage['build/event/event.js'][1658]++;
  if (item.overrideContext) {
    _$jscoverage['build/event/event.js'][1659]++;
    if ((item.overrideContext === true)) {
      _$jscoverage['build/event/event.js'][1660]++;
      context = item.obj;
    }
    else {
      _$jscoverage['build/event/event.js'][1662]++;
      context = item.overrideContext;
    }
  }
  _$jscoverage['build/event/event.js'][1665]++;
  item.fn.call(context, item.obj);
});
  _$jscoverage['build/event/event.js'][1668]++;
  var i, len, item, el, ready = [];
  _$jscoverage['build/event/event.js'][1671]++;
  for (((i = 0), (len = onAvailStack.length)); (i < len); (i = (i + 1))) {
    _$jscoverage['build/event/event.js'][1672]++;
    item = onAvailStack[i];
    _$jscoverage['build/event/event.js'][1673]++;
    if (item) {
      _$jscoverage['build/event/event.js'][1674]++;
      el = this.getEl(item.id);
      _$jscoverage['build/event/event.js'][1675]++;
      if (el) {
        _$jscoverage['build/event/event.js'][1676]++;
        if (item.checkReady) {
          _$jscoverage['build/event/event.js'][1677]++;
          if ((loadComplete || el.nextSibling || (! tryAgain))) {
            _$jscoverage['build/event/event.js'][1678]++;
            ready.push(item);
            _$jscoverage['build/event/event.js'][1679]++;
            onAvailStack[i] = null;
          }
        }
        else {
          _$jscoverage['build/event/event.js'][1682]++;
          executeItem(el, item);
          _$jscoverage['build/event/event.js'][1683]++;
          onAvailStack[i] = null;
        }
      }
      else {
        _$jscoverage['build/event/event.js'][1686]++;
        notAvail.push(item);
      }
    }
}
  _$jscoverage['build/event/event.js'][1692]++;
  for (((i = 0), (len = ready.length)); (i < len); (i = (i + 1))) {
    _$jscoverage['build/event/event.js'][1693]++;
    item = ready[i];
    _$jscoverage['build/event/event.js'][1694]++;
    executeItem(this.getEl(item.id), item);
}
  _$jscoverage['build/event/event.js'][1698]++;
  (retryCount--);
  _$jscoverage['build/event/event.js'][1700]++;
  if (tryAgain) {
    _$jscoverage['build/event/event.js'][1701]++;
    for (i = (onAvailStack.length - 1); (i > -1); (i--)) {
      _$jscoverage['build/event/event.js'][1702]++;
      item = onAvailStack[i];
      _$jscoverage['build/event/event.js'][1703]++;
      if (((! item) || (! item.id))) {
        _$jscoverage['build/event/event.js'][1704]++;
        onAvailStack.splice(i, 1);
      }
}
    _$jscoverage['build/event/event.js'][1708]++;
    this.startInterval();
  }
  else {
    _$jscoverage['build/event/event.js'][1710]++;
    if (this._interval) {
      _$jscoverage['build/event/event.js'][1712]++;
      this._interval.cancel();
      _$jscoverage['build/event/event.js'][1713]++;
      this._interval = null;
    }
  }
  _$jscoverage['build/event/event.js'][1717]++;
  this.locked = false;
}), purgeElement: (function (el, recurse, sType) {
  _$jscoverage['build/event/event.js'][1734]++;
  var oEl = (YAHOO.lang.isString(el)? this.getEl(el): el);
  _$jscoverage['build/event/event.js'][1735]++;
  var elListeners = this.getListeners(oEl, sType), i, len;
  _$jscoverage['build/event/event.js'][1736]++;
  if (elListeners) {
    _$jscoverage['build/event/event.js'][1737]++;
    for (i = (elListeners.length - 1); (i > -1); (i--)) {
      _$jscoverage['build/event/event.js'][1738]++;
      var l = elListeners[i];
      _$jscoverage['build/event/event.js'][1739]++;
      this.removeListener(oEl, l.type, l.fn);
}
  }
  _$jscoverage['build/event/event.js'][1743]++;
  if ((recurse && oEl && oEl.childNodes)) {
    _$jscoverage['build/event/event.js'][1744]++;
    for (((i = 0), (len = oEl.childNodes.length)); (i < len); (++i)) {
      _$jscoverage['build/event/event.js'][1745]++;
      this.purgeElement(oEl.childNodes[i], recurse, sType);
}
  }
}), getListeners: (function (el, sType) {
  _$jscoverage['build/event/event.js'][1767]++;
  var results = [], searchLists;
  _$jscoverage['build/event/event.js'][1768]++;
  if ((! sType)) {
    _$jscoverage['build/event/event.js'][1769]++;
    searchLists = [listeners, unloadListeners];
  }
  else {
    _$jscoverage['build/event/event.js'][1770]++;
    if ((sType === "unload")) {
      _$jscoverage['build/event/event.js'][1771]++;
      searchLists = [unloadListeners];
    }
    else {
      _$jscoverage['build/event/event.js'][1773]++;
      sType = this._getType(sType);
      _$jscoverage['build/event/event.js'][1774]++;
      searchLists = [listeners];
    }
  }
  _$jscoverage['build/event/event.js'][1777]++;
  var oEl = (YAHOO.lang.isString(el)? this.getEl(el): el);
  _$jscoverage['build/event/event.js'][1779]++;
  for (var j = 0; (j < searchLists.length); (j = (j + 1))) {
    _$jscoverage['build/event/event.js'][1780]++;
    var searchList = searchLists[j];
    _$jscoverage['build/event/event.js'][1781]++;
    if (searchList) {
      _$jscoverage['build/event/event.js'][1782]++;
      for (var i = 0, len = searchList.length; (i < len); (++i)) {
        _$jscoverage['build/event/event.js'][1783]++;
        var l = searchList[i];
        _$jscoverage['build/event/event.js'][1784]++;
        if ((l && (l[this.EL] === oEl) && ((! sType) || (sType === l[this.TYPE])))) {
          _$jscoverage['build/event/event.js'][1786]++;
          results.push({type: l[this.TYPE], fn: l[this.FN], obj: l[this.OBJ], adjust: l[this.OVERRIDE], scope: l[this.ADJ_SCOPE], index: i});
        }
}
    }
}
  _$jscoverage['build/event/event.js'][1799]++;
  return (results.length? results: null);
}), _unload: (function (e) {
  _$jscoverage['build/event/event.js'][1811]++;
  var EU = YAHOO.util.Event, i, j, l, len, index, ul = unloadListeners.slice(), context;
  _$jscoverage['build/event/event.js'][1815]++;
  for (((i = 0), (len = unloadListeners.length)); (i < len); (++i)) {
    _$jscoverage['build/event/event.js'][1816]++;
    l = ul[i];
    _$jscoverage['build/event/event.js'][1817]++;
    if (l) {
      _$jscoverage['build/event/event.js'][1818]++;
      context = window;
      _$jscoverage['build/event/event.js'][1819]++;
      if (l[EU.ADJ_SCOPE]) {
        _$jscoverage['build/event/event.js'][1820]++;
        if ((l[EU.ADJ_SCOPE] === true)) {
          _$jscoverage['build/event/event.js'][1821]++;
          context = l[EU.UNLOAD_OBJ];
        }
        else {
          _$jscoverage['build/event/event.js'][1823]++;
          context = l[EU.ADJ_SCOPE];
        }
      }
      _$jscoverage['build/event/event.js'][1826]++;
      l[EU.FN].call(context, EU.getEvent(e, l[EU.EL]), l[EU.UNLOAD_OBJ]);
      _$jscoverage['build/event/event.js'][1827]++;
      ul[i] = null;
    }
}
  _$jscoverage['build/event/event.js'][1831]++;
  l = null;
  _$jscoverage['build/event/event.js'][1832]++;
  context = null;
  _$jscoverage['build/event/event.js'][1833]++;
  unloadListeners = null;
  _$jscoverage['build/event/event.js'][1840]++;
  if (listeners) {
    _$jscoverage['build/event/event.js'][1841]++;
    for (j = (listeners.length - 1); (j > -1); (j--)) {
      _$jscoverage['build/event/event.js'][1842]++;
      l = listeners[j];
      _$jscoverage['build/event/event.js'][1843]++;
      if (l) {
        _$jscoverage['build/event/event.js'][1844]++;
        EU.removeListener(l[EU.EL], l[EU.TYPE], l[EU.FN], j);
      }
}
    _$jscoverage['build/event/event.js'][1847]++;
    l = null;
  }
  _$jscoverage['build/event/event.js'][1850]++;
  EU._simpleRemove(window, "unload", EU._unload);
}), _getScrollLeft: (function () {
  _$jscoverage['build/event/event.js'][1861]++;
  return this._getScroll()[1];
}), _getScrollTop: (function () {
  _$jscoverage['build/event/event.js'][1871]++;
  return this._getScroll()[0];
}), _getScroll: (function () {
  _$jscoverage['build/event/event.js'][1882]++;
  var dd = document.documentElement, db = document.body;
  _$jscoverage['build/event/event.js'][1883]++;
  if ((dd && (dd.scrollTop || dd.scrollLeft))) {
    _$jscoverage['build/event/event.js'][1884]++;
    return [dd.scrollTop, dd.scrollLeft];
  }
  else {
    _$jscoverage['build/event/event.js'][1885]++;
    if (db) {
      _$jscoverage['build/event/event.js'][1886]++;
      return [db.scrollTop, db.scrollLeft];
    }
    else {
      _$jscoverage['build/event/event.js'][1888]++;
      return [0, 0];
    }
  }
}), regCE: (function () {
}), _simpleAdd: (function () {
  _$jscoverage['build/event/event.js'][1914]++;
  if (window.addEventListener) {
    _$jscoverage['build/event/event.js'][1915]++;
    return (function (el, sType, fn, capture) {
  _$jscoverage['build/event/event.js'][1916]++;
  el.addEventListener(sType, fn, capture);
});
  }
  else {
    _$jscoverage['build/event/event.js'][1918]++;
    if (window.attachEvent) {
      _$jscoverage['build/event/event.js'][1919]++;
      return (function (el, sType, fn, capture) {
  _$jscoverage['build/event/event.js'][1920]++;
  el.attachEvent(("on" + sType), fn);
});
    }
    else {
      _$jscoverage['build/event/event.js'][1923]++;
      return (function () {
});
    }
  }
})(), _simpleRemove: (function () {
  _$jscoverage['build/event/event.js'][1939]++;
  if (window.removeEventListener) {
    _$jscoverage['build/event/event.js'][1940]++;
    return (function (el, sType, fn, capture) {
  _$jscoverage['build/event/event.js'][1941]++;
  el.removeEventListener(sType, fn, capture);
});
  }
  else {
    _$jscoverage['build/event/event.js'][1943]++;
    if (window.detachEvent) {
      _$jscoverage['build/event/event.js'][1944]++;
      return (function (el, sType, fn) {
  _$jscoverage['build/event/event.js'][1945]++;
  el.detachEvent(("on" + sType), fn);
});
    }
    else {
      _$jscoverage['build/event/event.js'][1948]++;
      return (function () {
});
    }
  }
})()});
})();
  _$jscoverage['build/event/event.js'][1955]++;
  (function () {
  _$jscoverage['build/event/event.js'][1956]++;
  var EU = YAHOO.util.Event;
  _$jscoverage['build/event/event.js'][1964]++;
  EU.on = EU.addListener;
  _$jscoverage['build/event/event.js'][1973]++;
  EU.onFocus = EU.addFocusListener;
  _$jscoverage['build/event/event.js'][1982]++;
  EU.onBlur = EU.addBlurListener;
  _$jscoverage['build/event/event.js'][1990]++;
  if (EU.isIE) {
    _$jscoverage['build/event/event.js'][1991]++;
    if ((self !== self.top)) {
      _$jscoverage['build/event/event.js'][1992]++;
      document.onreadystatechange = (function () {
  _$jscoverage['build/event/event.js'][1993]++;
  if ((document.readyState == "complete")) {
    _$jscoverage['build/event/event.js'][1994]++;
    document.onreadystatechange = null;
    _$jscoverage['build/event/event.js'][1995]++;
    EU._ready();
  }
});
    }
    else {
      _$jscoverage['build/event/event.js'][2002]++;
      YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach, YAHOO.util.Event, true);
      _$jscoverage['build/event/event.js'][2006]++;
      var n = document.createElement("p");
      _$jscoverage['build/event/event.js'][2008]++;
      EU._dri = setInterval((function () {
  _$jscoverage['build/event/event.js'][2009]++;
  try {
    _$jscoverage['build/event/event.js'][2011]++;
    n.doScroll("left");
    _$jscoverage['build/event/event.js'][2012]++;
    clearInterval(EU._dri);
    _$jscoverage['build/event/event.js'][2013]++;
    EU._dri = null;
    _$jscoverage['build/event/event.js'][2014]++;
    EU._ready();
    _$jscoverage['build/event/event.js'][2015]++;
    n = null;
  }
  catch (ex) {
  }
}), EU.POLL_INTERVAL);
    }
  }
  else {
    _$jscoverage['build/event/event.js'][2023]++;
    if ((EU.webkit && (EU.webkit < 525))) {
      _$jscoverage['build/event/event.js'][2025]++;
      EU._dri = setInterval((function () {
  _$jscoverage['build/event/event.js'][2026]++;
  var rs = document.readyState;
  _$jscoverage['build/event/event.js'][2027]++;
  if ((("loaded" == rs) || ("complete" == rs))) {
    _$jscoverage['build/event/event.js'][2028]++;
    clearInterval(EU._dri);
    _$jscoverage['build/event/event.js'][2029]++;
    EU._dri = null;
    _$jscoverage['build/event/event.js'][2030]++;
    EU._ready();
  }
}), EU.POLL_INTERVAL);
    }
    else {
      _$jscoverage['build/event/event.js'][2038]++;
      EU._simpleAdd(document, "DOMContentLoaded", EU._ready);
    }
  }
  _$jscoverage['build/event/event.js'][2044]++;
  EU._simpleAdd(window, "load", EU._load);
  _$jscoverage['build/event/event.js'][2045]++;
  EU._simpleAdd(window, "unload", EU._unload);
  _$jscoverage['build/event/event.js'][2046]++;
  EU._tryPreloadAttach();
})();
}
_$jscoverage['build/event/event.js'][2059]++;
YAHOO.util.EventProvider = (function () {
});
_$jscoverage['build/event/event.js'][2061]++;
YAHOO.util.EventProvider.prototype = {__yui_events: null, __yui_subscribers: null, subscribe: (function (p_type, p_fn, p_obj, overrideContext) {
  _$jscoverage['build/event/event.js'][2092]++;
  this.__yui_events = (this.__yui_events || {});
  _$jscoverage['build/event/event.js'][2093]++;
  var ce = this.__yui_events[p_type];
  _$jscoverage['build/event/event.js'][2095]++;
  if (ce) {
    _$jscoverage['build/event/event.js'][2096]++;
    ce.subscribe(p_fn, p_obj, overrideContext);
  }
  else {
    _$jscoverage['build/event/event.js'][2098]++;
    this.__yui_subscribers = (this.__yui_subscribers || {});
    _$jscoverage['build/event/event.js'][2099]++;
    var subs = this.__yui_subscribers;
    _$jscoverage['build/event/event.js'][2100]++;
    if ((! subs[p_type])) {
      _$jscoverage['build/event/event.js'][2101]++;
      subs[p_type] = [];
    }
    _$jscoverage['build/event/event.js'][2103]++;
    subs[p_type].push({fn: p_fn, obj: p_obj, overrideContext: overrideContext});
  }
}), unsubscribe: (function (p_type, p_fn, p_obj) {
  _$jscoverage['build/event/event.js'][2124]++;
  this.__yui_events = (this.__yui_events || {});
  _$jscoverage['build/event/event.js'][2125]++;
  var evts = this.__yui_events;
  _$jscoverage['build/event/event.js'][2126]++;
  if (p_type) {
    _$jscoverage['build/event/event.js'][2127]++;
    var ce = evts[p_type];
    _$jscoverage['build/event/event.js'][2128]++;
    if (ce) {
      _$jscoverage['build/event/event.js'][2129]++;
      return ce.unsubscribe(p_fn, p_obj);
    }
  }
  else {
    _$jscoverage['build/event/event.js'][2132]++;
    var ret = true;
    _$jscoverage['build/event/event.js'][2133]++;
    for (var i in evts) {
      _$jscoverage['build/event/event.js'][2134]++;
      if (YAHOO.lang.hasOwnProperty(evts, i)) {
        _$jscoverage['build/event/event.js'][2135]++;
        ret = (ret && evts[i].unsubscribe(p_fn, p_obj));
      }
}
    _$jscoverage['build/event/event.js'][2138]++;
    return ret;
  }
  _$jscoverage['build/event/event.js'][2141]++;
  return false;
}), unsubscribeAll: (function (p_type) {
  _$jscoverage['build/event/event.js'][2152]++;
  return this.unsubscribe(p_type);
}), createEvent: (function (p_type, p_config) {
  _$jscoverage['build/event/event.js'][2194]++;
  this.__yui_events = (this.__yui_events || {});
  _$jscoverage['build/event/event.js'][2195]++;
  var opts = (p_config || {}), events = this.__yui_events, ce;
  _$jscoverage['build/event/event.js'][2198]++;
  if (events[p_type]) {
  }
  else {
    _$jscoverage['build/event/event.js'][2201]++;
    ce = new (YAHOO.util.CustomEvent)(p_type, (opts.scope || this), opts.silent, YAHOO.util.CustomEvent.FLAT, opts.fireOnce);
    _$jscoverage['build/event/event.js'][2204]++;
    events[p_type] = ce;
    _$jscoverage['build/event/event.js'][2206]++;
    if (opts.onSubscribeCallback) {
      _$jscoverage['build/event/event.js'][2207]++;
      ce.subscribeEvent.subscribe(opts.onSubscribeCallback);
    }
    _$jscoverage['build/event/event.js'][2210]++;
    this.__yui_subscribers = (this.__yui_subscribers || {});
    _$jscoverage['build/event/event.js'][2211]++;
    var qs = this.__yui_subscribers[p_type];
    _$jscoverage['build/event/event.js'][2213]++;
    if (qs) {
      _$jscoverage['build/event/event.js'][2214]++;
      for (var i = 0; (i < qs.length); (++i)) {
        _$jscoverage['build/event/event.js'][2215]++;
        ce.subscribe(qs[i].fn, qs[i].obj, qs[i].overrideContext);
}
    }
  }
  _$jscoverage['build/event/event.js'][2220]++;
  return events[p_type];
}), fireEvent: (function (p_type) {
  _$jscoverage['build/event/event.js'][2242]++;
  this.__yui_events = (this.__yui_events || {});
  _$jscoverage['build/event/event.js'][2243]++;
  var ce = this.__yui_events[p_type];
  _$jscoverage['build/event/event.js'][2245]++;
  if ((! ce)) {
    _$jscoverage['build/event/event.js'][2246]++;
    return null;
  }
  _$jscoverage['build/event/event.js'][2249]++;
  var args = [];
  _$jscoverage['build/event/event.js'][2250]++;
  for (var i = 1; (i < arguments.length); (++i)) {
    _$jscoverage['build/event/event.js'][2251]++;
    args.push(arguments[i]);
}
  _$jscoverage['build/event/event.js'][2253]++;
  return ce.fire.apply(ce, args);
}), hasEvent: (function (type) {
  _$jscoverage['build/event/event.js'][2263]++;
  if (this.__yui_events) {
    _$jscoverage['build/event/event.js'][2264]++;
    if (this.__yui_events[type]) {
      _$jscoverage['build/event/event.js'][2265]++;
      return true;
    }
  }
  _$jscoverage['build/event/event.js'][2268]++;
  return false;
})};
_$jscoverage['build/event/event.js'][2273]++;
(function () {
  _$jscoverage['build/event/event.js'][2275]++;
  var Event = YAHOO.util.Event, Lang = YAHOO.lang;
  _$jscoverage['build/event/event.js'][2307]++;
  YAHOO.util.KeyListener = (function (attachTo, keyData, handler, event) {
  _$jscoverage['build/event/event.js'][2308]++;
  if ((! attachTo)) {
  }
  else {
    _$jscoverage['build/event/event.js'][2309]++;
    if ((! keyData)) {
    }
    else {
      _$jscoverage['build/event/event.js'][2310]++;
      if ((! handler)) {
      }
    }
  }
  _$jscoverage['build/event/event.js'][2313]++;
  if ((! event)) {
    _$jscoverage['build/event/event.js'][2314]++;
    event = YAHOO.util.KeyListener.KEYDOWN;
  }
  _$jscoverage['build/event/event.js'][2326]++;
  var keyEvent = new (YAHOO.util.CustomEvent)("keyPressed");
  _$jscoverage['build/event/event.js'][2337]++;
  this.enabledEvent = new (YAHOO.util.CustomEvent)("enabled");
  _$jscoverage['build/event/event.js'][2348]++;
  this.disabledEvent = new (YAHOO.util.CustomEvent)("disabled");
  _$jscoverage['build/event/event.js'][2350]++;
  if (Lang.isString(attachTo)) {
    _$jscoverage['build/event/event.js'][2351]++;
    attachTo = document.getElementById(attachTo);
  }
  _$jscoverage['build/event/event.js'][2354]++;
  if (Lang.isFunction(handler)) {
    _$jscoverage['build/event/event.js'][2355]++;
    keyEvent.subscribe(handler);
  }
  else {
    _$jscoverage['build/event/event.js'][2357]++;
    keyEvent.subscribe(handler.fn, handler.scope, handler.correctScope);
  }
  _$jscoverage['build/event/event.js'][2367]++;
  function handleKeyPress(e, obj) {
    _$jscoverage['build/event/event.js'][2368]++;
    if ((! keyData.shift)) {
      _$jscoverage['build/event/event.js'][2369]++;
      keyData.shift = false;
    }
    _$jscoverage['build/event/event.js'][2371]++;
    if ((! keyData.alt)) {
      _$jscoverage['build/event/event.js'][2372]++;
      keyData.alt = false;
    }
    _$jscoverage['build/event/event.js'][2374]++;
    if ((! keyData.ctrl)) {
      _$jscoverage['build/event/event.js'][2375]++;
      keyData.ctrl = false;
    }
    _$jscoverage['build/event/event.js'][2379]++;
    if (((e.shiftKey == keyData.shift) && (e.altKey == keyData.alt) && (e.ctrlKey == keyData.ctrl))) {
      _$jscoverage['build/event/event.js'][2383]++;
      var dataItem, keys = keyData.keys, key;
      _$jscoverage['build/event/event.js'][2385]++;
      if (YAHOO.lang.isArray(keys)) {
        _$jscoverage['build/event/event.js'][2386]++;
        for (var i = 0; (i < keys.length); (i++)) {
          _$jscoverage['build/event/event.js'][2387]++;
          dataItem = keys[i];
          _$jscoverage['build/event/event.js'][2388]++;
          key = Event.getCharCode(e);
          _$jscoverage['build/event/event.js'][2390]++;
          if ((dataItem == key)) {
            _$jscoverage['build/event/event.js'][2391]++;
            keyEvent.fire(key, e);
            _$jscoverage['build/event/event.js'][2392]++;
            break;
          }
}
      }
      else {
        _$jscoverage['build/event/event.js'][2396]++;
        key = Event.getCharCode(e);
        _$jscoverage['build/event/event.js'][2397]++;
        if ((keys == key)) {
          _$jscoverage['build/event/event.js'][2398]++;
          keyEvent.fire(key, e);
        }
      }
    }
}
  _$jscoverage['build/event/event.js'][2409]++;
  this.enable = (function () {
  _$jscoverage['build/event/event.js'][2410]++;
  if ((! this.enabled)) {
    _$jscoverage['build/event/event.js'][2411]++;
    Event.on(attachTo, event, handleKeyPress);
    _$jscoverage['build/event/event.js'][2412]++;
    this.enabledEvent.fire(keyData);
  }
  _$jscoverage['build/event/event.js'][2419]++;
  this.enabled = true;
});
  _$jscoverage['build/event/event.js'][2427]++;
  this.disable = (function () {
  _$jscoverage['build/event/event.js'][2428]++;
  if (this.enabled) {
    _$jscoverage['build/event/event.js'][2429]++;
    Event.removeListener(attachTo, event, handleKeyPress);
    _$jscoverage['build/event/event.js'][2430]++;
    this.disabledEvent.fire(keyData);
  }
  _$jscoverage['build/event/event.js'][2432]++;
  this.enabled = false;
});
  _$jscoverage['build/event/event.js'][2440]++;
  this.toString = (function () {
  _$jscoverage['build/event/event.js'][2441]++;
  return ("KeyListener [" + keyData.keys + "] " + attachTo.tagName + (attachTo.id? ("[" + attachTo.id + "]"): ""));
});
});
  _$jscoverage['build/event/event.js'][2447]++;
  var KeyListener = YAHOO.util.KeyListener;
  _$jscoverage['build/event/event.js'][2456]++;
  KeyListener.KEYDOWN = "keydown";
  _$jscoverage['build/event/event.js'][2465]++;
  KeyListener.KEYUP = "keyup";
  _$jscoverage['build/event/event.js'][2473]++;
  KeyListener.KEY = {ALT: 18, BACK_SPACE: 8, CAPS_LOCK: 20, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, META: 224, NUM_LOCK: 144, PAGE_DOWN: 34, PAGE_UP: 33, PAUSE: 19, PRINTSCREEN: 44, RIGHT: 39, SCROLL_LOCK: 145, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38};
})();
_$jscoverage['build/event/event.js'][2500]++;
YAHOO.register("event", YAHOO.util.Event, {version: "2.8.0r4", build: "2449"});

