/* 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) {
    _$jscoverage = top._$jscoverage;
  }
}
catch (e) {}
if (typeof _$jscoverage !== 'object') {
  _$jscoverage = {};
}
if (! _$jscoverage['core/domUtils.js']) {
  _$jscoverage['core/domUtils.js'] = [];
  _$jscoverage['core/domUtils.js'][15] = 0;
  _$jscoverage['core/domUtils.js'][16] = 0;
  _$jscoverage['core/domUtils.js'][18] = 0;
  _$jscoverage['core/domUtils.js'][19] = 0;
  _$jscoverage['core/domUtils.js'][20] = 0;
  _$jscoverage['core/domUtils.js'][21] = 0;
  _$jscoverage['core/domUtils.js'][23] = 0;
  _$jscoverage['core/domUtils.js'][25] = 0;
  _$jscoverage['core/domUtils.js'][26] = 0;
  _$jscoverage['core/domUtils.js'][28] = 0;
  _$jscoverage['core/domUtils.js'][30] = 0;
  _$jscoverage['core/domUtils.js'][53] = 0;
  _$jscoverage['core/domUtils.js'][120] = 0;
  _$jscoverage['core/domUtils.js'][122] = 0;
  _$jscoverage['core/domUtils.js'][124] = 0;
  _$jscoverage['core/domUtils.js'][127] = 0;
  _$jscoverage['core/domUtils.js'][128] = 0;
  _$jscoverage['core/domUtils.js'][130] = 0;
  _$jscoverage['core/domUtils.js'][132] = 0;
  _$jscoverage['core/domUtils.js'][134] = 0;
  _$jscoverage['core/domUtils.js'][136] = 0;
  _$jscoverage['core/domUtils.js'][137] = 0;
  _$jscoverage['core/domUtils.js'][139] = 0;
  _$jscoverage['core/domUtils.js'][141] = 0;
  _$jscoverage['core/domUtils.js'][143] = 0;
  _$jscoverage['core/domUtils.js'][145] = 0;
  _$jscoverage['core/domUtils.js'][146] = 0;
  _$jscoverage['core/domUtils.js'][147] = 0;
  _$jscoverage['core/domUtils.js'][149] = 0;
  _$jscoverage['core/domUtils.js'][151] = 0;
  _$jscoverage['core/domUtils.js'][152] = 0;
  _$jscoverage['core/domUtils.js'][154] = 0;
  _$jscoverage['core/domUtils.js'][155] = 0;
  _$jscoverage['core/domUtils.js'][156] = 0;
  _$jscoverage['core/domUtils.js'][157] = 0;
  _$jscoverage['core/domUtils.js'][159] = 0;
  _$jscoverage['core/domUtils.js'][163] = 0;
  _$jscoverage['core/domUtils.js'][181] = 0;
  _$jscoverage['core/domUtils.js'][183] = 0;
  _$jscoverage['core/domUtils.js'][184] = 0;
  _$jscoverage['core/domUtils.js'][185] = 0;
  _$jscoverage['core/domUtils.js'][186] = 0;
  _$jscoverage['core/domUtils.js'][188] = 0;
  _$jscoverage['core/domUtils.js'][190] = 0;
  _$jscoverage['core/domUtils.js'][192] = 0;
  _$jscoverage['core/domUtils.js'][217] = 0;
  _$jscoverage['core/domUtils.js'][279] = 0;
  _$jscoverage['core/domUtils.js'][280] = 0;
  _$jscoverage['core/domUtils.js'][281] = 0;
  _$jscoverage['core/domUtils.js'][282] = 0;
  _$jscoverage['core/domUtils.js'][283] = 0;
  _$jscoverage['core/domUtils.js'][285] = 0;
  _$jscoverage['core/domUtils.js'][288] = 0;
  _$jscoverage['core/domUtils.js'][350] = 0;
  _$jscoverage['core/domUtils.js'][351] = 0;
  _$jscoverage['core/domUtils.js'][352] = 0;
  _$jscoverage['core/domUtils.js'][365] = 0;
  _$jscoverage['core/domUtils.js'][366] = 0;
  _$jscoverage['core/domUtils.js'][367] = 0;
  _$jscoverage['core/domUtils.js'][369] = 0;
  _$jscoverage['core/domUtils.js'][380] = 0;
  _$jscoverage['core/domUtils.js'][420] = 0;
  _$jscoverage['core/domUtils.js'][422] = 0;
  _$jscoverage['core/domUtils.js'][423] = 0;
  _$jscoverage['core/domUtils.js'][424] = 0;
  _$jscoverage['core/domUtils.js'][425] = 0;
  _$jscoverage['core/domUtils.js'][428] = 0;
  _$jscoverage['core/domUtils.js'][430] = 0;
  _$jscoverage['core/domUtils.js'][437] = 0;
  _$jscoverage['core/domUtils.js'][456] = 0;
  _$jscoverage['core/domUtils.js'][471] = 0;
  _$jscoverage['core/domUtils.js'][472] = 0;
  _$jscoverage['core/domUtils.js'][490] = 0;
  _$jscoverage['core/domUtils.js'][491] = 0;
  _$jscoverage['core/domUtils.js'][492] = 0;
  _$jscoverage['core/domUtils.js'][493] = 0;
  _$jscoverage['core/domUtils.js'][494] = 0;
  _$jscoverage['core/domUtils.js'][495] = 0;
  _$jscoverage['core/domUtils.js'][497] = 0;
  _$jscoverage['core/domUtils.js'][499] = 0;
  _$jscoverage['core/domUtils.js'][500] = 0;
  _$jscoverage['core/domUtils.js'][501] = 0;
  _$jscoverage['core/domUtils.js'][502] = 0;
  _$jscoverage['core/domUtils.js'][503] = 0;
  _$jscoverage['core/domUtils.js'][505] = 0;
  _$jscoverage['core/domUtils.js'][506] = 0;
  _$jscoverage['core/domUtils.js'][507] = 0;
  _$jscoverage['core/domUtils.js'][509] = 0;
  _$jscoverage['core/domUtils.js'][523] = 0;
  _$jscoverage['core/domUtils.js'][524] = 0;
  _$jscoverage['core/domUtils.js'][525] = 0;
  _$jscoverage['core/domUtils.js'][528] = 0;
  _$jscoverage['core/domUtils.js'][529] = 0;
  _$jscoverage['core/domUtils.js'][530] = 0;
  _$jscoverage['core/domUtils.js'][533] = 0;
  _$jscoverage['core/domUtils.js'][534] = 0;
  _$jscoverage['core/domUtils.js'][554] = 0;
  _$jscoverage['core/domUtils.js'][555] = 0;
  _$jscoverage['core/domUtils.js'][556] = 0;
  _$jscoverage['core/domUtils.js'][557] = 0;
  _$jscoverage['core/domUtils.js'][559] = 0;
  _$jscoverage['core/domUtils.js'][561] = 0;
  _$jscoverage['core/domUtils.js'][562] = 0;
  _$jscoverage['core/domUtils.js'][563] = 0;
  _$jscoverage['core/domUtils.js'][564] = 0;
  _$jscoverage['core/domUtils.js'][566] = 0;
  _$jscoverage['core/domUtils.js'][586] = 0;
  _$jscoverage['core/domUtils.js'][604] = 0;
  _$jscoverage['core/domUtils.js'][605] = 0;
  _$jscoverage['core/domUtils.js'][606] = 0;
  _$jscoverage['core/domUtils.js'][607] = 0;
  _$jscoverage['core/domUtils.js'][608] = 0;
  _$jscoverage['core/domUtils.js'][610] = 0;
  _$jscoverage['core/domUtils.js'][641] = 0;
  _$jscoverage['core/domUtils.js'][643] = 0;
  _$jscoverage['core/domUtils.js'][644] = 0;
  _$jscoverage['core/domUtils.js'][645] = 0;
  _$jscoverage['core/domUtils.js'][646] = 0;
  _$jscoverage['core/domUtils.js'][648] = 0;
  _$jscoverage['core/domUtils.js'][649] = 0;
  _$jscoverage['core/domUtils.js'][653] = 0;
  _$jscoverage['core/domUtils.js'][654] = 0;
  _$jscoverage['core/domUtils.js'][655] = 0;
  _$jscoverage['core/domUtils.js'][656] = 0;
  _$jscoverage['core/domUtils.js'][658] = 0;
  _$jscoverage['core/domUtils.js'][659] = 0;
  _$jscoverage['core/domUtils.js'][660] = 0;
  _$jscoverage['core/domUtils.js'][665] = 0;
  _$jscoverage['core/domUtils.js'][669] = 0;
  _$jscoverage['core/domUtils.js'][700] = 0;
  _$jscoverage['core/domUtils.js'][702] = 0;
  _$jscoverage['core/domUtils.js'][703] = 0;
  _$jscoverage['core/domUtils.js'][704] = 0;
  _$jscoverage['core/domUtils.js'][705] = 0;
  _$jscoverage['core/domUtils.js'][707] = 0;
  _$jscoverage['core/domUtils.js'][708] = 0;
  _$jscoverage['core/domUtils.js'][709] = 0;
  _$jscoverage['core/domUtils.js'][711] = 0;
  _$jscoverage['core/domUtils.js'][712] = 0;
  _$jscoverage['core/domUtils.js'][713] = 0;
  _$jscoverage['core/domUtils.js'][714] = 0;
  _$jscoverage['core/domUtils.js'][716] = 0;
  _$jscoverage['core/domUtils.js'][749] = 0;
  _$jscoverage['core/domUtils.js'][750] = 0;
  _$jscoverage['core/domUtils.js'][752] = 0;
  _$jscoverage['core/domUtils.js'][754] = 0;
  _$jscoverage['core/domUtils.js'][755] = 0;
  _$jscoverage['core/domUtils.js'][757] = 0;
  _$jscoverage['core/domUtils.js'][758] = 0;
  _$jscoverage['core/domUtils.js'][759] = 0;
  _$jscoverage['core/domUtils.js'][760] = 0;
  _$jscoverage['core/domUtils.js'][761] = 0;
  _$jscoverage['core/domUtils.js'][763] = 0;
  _$jscoverage['core/domUtils.js'][764] = 0;
  _$jscoverage['core/domUtils.js'][766] = 0;
  _$jscoverage['core/domUtils.js'][769] = 0;
  _$jscoverage['core/domUtils.js'][770] = 0;
  _$jscoverage['core/domUtils.js'][771] = 0;
  _$jscoverage['core/domUtils.js'][772] = 0;
  _$jscoverage['core/domUtils.js'][774] = 0;
  _$jscoverage['core/domUtils.js'][777] = 0;
  _$jscoverage['core/domUtils.js'][779] = 0;
  _$jscoverage['core/domUtils.js'][780] = 0;
  _$jscoverage['core/domUtils.js'][784] = 0;
  _$jscoverage['core/domUtils.js'][785] = 0;
  _$jscoverage['core/domUtils.js'][786] = 0;
  _$jscoverage['core/domUtils.js'][787] = 0;
  _$jscoverage['core/domUtils.js'][790] = 0;
  _$jscoverage['core/domUtils.js'][791] = 0;
  _$jscoverage['core/domUtils.js'][794] = 0;
  _$jscoverage['core/domUtils.js'][824] = 0;
  _$jscoverage['core/domUtils.js'][826] = 0;
  _$jscoverage['core/domUtils.js'][827] = 0;
  _$jscoverage['core/domUtils.js'][828] = 0;
  _$jscoverage['core/domUtils.js'][829] = 0;
  _$jscoverage['core/domUtils.js'][830] = 0;
  _$jscoverage['core/domUtils.js'][831] = 0;
  _$jscoverage['core/domUtils.js'][832] = 0;
  _$jscoverage['core/domUtils.js'][833] = 0;
  _$jscoverage['core/domUtils.js'][835] = 0;
  _$jscoverage['core/domUtils.js'][836] = 0;
  _$jscoverage['core/domUtils.js'][839] = 0;
  _$jscoverage['core/domUtils.js'][841] = 0;
  _$jscoverage['core/domUtils.js'][842] = 0;
  _$jscoverage['core/domUtils.js'][844] = 0;
  _$jscoverage['core/domUtils.js'][845] = 0;
  _$jscoverage['core/domUtils.js'][846] = 0;
  _$jscoverage['core/domUtils.js'][847] = 0;
  _$jscoverage['core/domUtils.js'][849] = 0;
  _$jscoverage['core/domUtils.js'][850] = 0;
  _$jscoverage['core/domUtils.js'][851] = 0;
  _$jscoverage['core/domUtils.js'][854] = 0;
  _$jscoverage['core/domUtils.js'][885] = 0;
  _$jscoverage['core/domUtils.js'][900] = 0;
  _$jscoverage['core/domUtils.js'][913] = 0;
  _$jscoverage['core/domUtils.js'][918] = 0;
  _$jscoverage['core/domUtils.js'][919] = 0;
  _$jscoverage['core/domUtils.js'][920] = 0;
  _$jscoverage['core/domUtils.js'][921] = 0;
  _$jscoverage['core/domUtils.js'][922] = 0;
  _$jscoverage['core/domUtils.js'][923] = 0;
  _$jscoverage['core/domUtils.js'][924] = 0;
  _$jscoverage['core/domUtils.js'][925] = 0;
  _$jscoverage['core/domUtils.js'][926] = 0;
  _$jscoverage['core/domUtils.js'][928] = 0;
  _$jscoverage['core/domUtils.js'][929] = 0;
  _$jscoverage['core/domUtils.js'][931] = 0;
  _$jscoverage['core/domUtils.js'][932] = 0;
  _$jscoverage['core/domUtils.js'][934] = 0;
  _$jscoverage['core/domUtils.js'][935] = 0;
  _$jscoverage['core/domUtils.js'][937] = 0;
  _$jscoverage['core/domUtils.js'][939] = 0;
  _$jscoverage['core/domUtils.js'][940] = 0;
  _$jscoverage['core/domUtils.js'][941] = 0;
  _$jscoverage['core/domUtils.js'][942] = 0;
  _$jscoverage['core/domUtils.js'][943] = 0;
  _$jscoverage['core/domUtils.js'][944] = 0;
  _$jscoverage['core/domUtils.js'][958] = 0;
  _$jscoverage['core/domUtils.js'][959] = 0;
  _$jscoverage['core/domUtils.js'][961] = 0;
  _$jscoverage['core/domUtils.js'][962] = 0;
  _$jscoverage['core/domUtils.js'][964] = 0;
  _$jscoverage['core/domUtils.js'][965] = 0;
  _$jscoverage['core/domUtils.js'][967] = 0;
  _$jscoverage['core/domUtils.js'][970] = 0;
  _$jscoverage['core/domUtils.js'][972] = 0;
  _$jscoverage['core/domUtils.js'][974] = 0;
  _$jscoverage['core/domUtils.js'][1000] = 0;
  _$jscoverage['core/domUtils.js'][1001] = 0;
  _$jscoverage['core/domUtils.js'][1002] = 0;
  _$jscoverage['core/domUtils.js'][1003] = 0;
  _$jscoverage['core/domUtils.js'][1006] = 0;
  _$jscoverage['core/domUtils.js'][1007] = 0;
  _$jscoverage['core/domUtils.js'][1019] = 0;
  _$jscoverage['core/domUtils.js'][1020] = 0;
  _$jscoverage['core/domUtils.js'][1021] = 0;
  _$jscoverage['core/domUtils.js'][1022] = 0;
  _$jscoverage['core/domUtils.js'][1025] = 0;
  _$jscoverage['core/domUtils.js'][1026] = 0;
  _$jscoverage['core/domUtils.js'][1027] = 0;
  _$jscoverage['core/domUtils.js'][1028] = 0;
  _$jscoverage['core/domUtils.js'][1029] = 0;
  _$jscoverage['core/domUtils.js'][1030] = 0;
  _$jscoverage['core/domUtils.js'][1031] = 0;
  _$jscoverage['core/domUtils.js'][1034] = 0;
  _$jscoverage['core/domUtils.js'][1035] = 0;
  _$jscoverage['core/domUtils.js'][1036] = 0;
  _$jscoverage['core/domUtils.js'][1037] = 0;
  _$jscoverage['core/domUtils.js'][1038] = 0;
  _$jscoverage['core/domUtils.js'][1039] = 0;
  _$jscoverage['core/domUtils.js'][1040] = 0;
  _$jscoverage['core/domUtils.js'][1044] = 0;
  _$jscoverage['core/domUtils.js'][1045] = 0;
  _$jscoverage['core/domUtils.js'][1047] = 0;
  _$jscoverage['core/domUtils.js'][1049] = 0;
  _$jscoverage['core/domUtils.js'][1050] = 0;
  _$jscoverage['core/domUtils.js'][1061] = 0;
  _$jscoverage['core/domUtils.js'][1062] = 0;
  _$jscoverage['core/domUtils.js'][1063] = 0;
  _$jscoverage['core/domUtils.js'][1065] = 0;
  _$jscoverage['core/domUtils.js'][1066] = 0;
  _$jscoverage['core/domUtils.js'][1067] = 0;
  _$jscoverage['core/domUtils.js'][1068] = 0;
  _$jscoverage['core/domUtils.js'][1069] = 0;
  _$jscoverage['core/domUtils.js'][1070] = 0;
  _$jscoverage['core/domUtils.js'][1071] = 0;
  _$jscoverage['core/domUtils.js'][1075] = 0;
  _$jscoverage['core/domUtils.js'][1106] = 0;
  _$jscoverage['core/domUtils.js'][1107] = 0;
  _$jscoverage['core/domUtils.js'][1108] = 0;
  _$jscoverage['core/domUtils.js'][1109] = 0;
  _$jscoverage['core/domUtils.js'][1111] = 0;
  _$jscoverage['core/domUtils.js'][1113] = 0;
  _$jscoverage['core/domUtils.js'][1114] = 0;
  _$jscoverage['core/domUtils.js'][1115] = 0;
  _$jscoverage['core/domUtils.js'][1116] = 0;
  _$jscoverage['core/domUtils.js'][1118] = 0;
  _$jscoverage['core/domUtils.js'][1120] = 0;
  _$jscoverage['core/domUtils.js'][1121] = 0;
  _$jscoverage['core/domUtils.js'][1125] = 0;
  _$jscoverage['core/domUtils.js'][1126] = 0;
  _$jscoverage['core/domUtils.js'][1127] = 0;
  _$jscoverage['core/domUtils.js'][1130] = 0;
  _$jscoverage['core/domUtils.js'][1189] = 0;
  _$jscoverage['core/domUtils.js'][1190] = 0;
  _$jscoverage['core/domUtils.js'][1191] = 0;
  _$jscoverage['core/domUtils.js'][1192] = 0;
  _$jscoverage['core/domUtils.js'][1193] = 0;
  _$jscoverage['core/domUtils.js'][1194] = 0;
  _$jscoverage['core/domUtils.js'][1196] = 0;
  _$jscoverage['core/domUtils.js'][1199] = 0;
  _$jscoverage['core/domUtils.js'][1202] = 0;
  _$jscoverage['core/domUtils.js'][1203] = 0;
  _$jscoverage['core/domUtils.js'][1218] = 0;
  _$jscoverage['core/domUtils.js'][1219] = 0;
  _$jscoverage['core/domUtils.js'][1221] = 0;
  _$jscoverage['core/domUtils.js'][1222] = 0;
  _$jscoverage['core/domUtils.js'][1224] = 0;
  _$jscoverage['core/domUtils.js'][1225] = 0;
  _$jscoverage['core/domUtils.js'][1226] = 0;
  _$jscoverage['core/domUtils.js'][1227] = 0;
  _$jscoverage['core/domUtils.js'][1232] = 0;
  _$jscoverage['core/domUtils.js'][1234] = 0;
  _$jscoverage['core/domUtils.js'][1235] = 0;
  _$jscoverage['core/domUtils.js'][1239] = 0;
  _$jscoverage['core/domUtils.js'][1286] = 0;
  _$jscoverage['core/domUtils.js'][1287] = 0;
  _$jscoverage['core/domUtils.js'][1288] = 0;
  _$jscoverage['core/domUtils.js'][1289] = 0;
  _$jscoverage['core/domUtils.js'][1291] = 0;
  _$jscoverage['core/domUtils.js'][1292] = 0;
  _$jscoverage['core/domUtils.js'][1294] = 0;
  _$jscoverage['core/domUtils.js'][1295] = 0;
  _$jscoverage['core/domUtils.js'][1297] = 0;
  _$jscoverage['core/domUtils.js'][1323] = 0;
  _$jscoverage['core/domUtils.js'][1349] = 0;
  _$jscoverage['core/domUtils.js'][1350] = 0;
  _$jscoverage['core/domUtils.js'][1351] = 0;
  _$jscoverage['core/domUtils.js'][1352] = 0;
  _$jscoverage['core/domUtils.js'][1355] = 0;
  _$jscoverage['core/domUtils.js'][1356] = 0;
  _$jscoverage['core/domUtils.js'][1358] = 0;
  _$jscoverage['core/domUtils.js'][1359] = 0;
  _$jscoverage['core/domUtils.js'][1361] = 0;
  _$jscoverage['core/domUtils.js'][1362] = 0;
  _$jscoverage['core/domUtils.js'][1364] = 0;
  _$jscoverage['core/domUtils.js'][1365] = 0;
  _$jscoverage['core/domUtils.js'][1367] = 0;
  _$jscoverage['core/domUtils.js'][1371] = 0;
  _$jscoverage['core/domUtils.js'][1398] = 0;
  _$jscoverage['core/domUtils.js'][1400] = 0;
  _$jscoverage['core/domUtils.js'][1401] = 0;
  _$jscoverage['core/domUtils.js'][1404] = 0;
  _$jscoverage['core/domUtils.js'][1405] = 0;
  _$jscoverage['core/domUtils.js'][1408] = 0;
  _$jscoverage['core/domUtils.js'][1410] = 0;
  _$jscoverage['core/domUtils.js'][1411] = 0;
  _$jscoverage['core/domUtils.js'][1412] = 0;
  _$jscoverage['core/domUtils.js'][1413] = 0;
  _$jscoverage['core/domUtils.js'][1414] = 0;
  _$jscoverage['core/domUtils.js'][1415] = 0;
  _$jscoverage['core/domUtils.js'][1416] = 0;
  _$jscoverage['core/domUtils.js'][1417] = 0;
  _$jscoverage['core/domUtils.js'][1419] = 0;
  _$jscoverage['core/domUtils.js'][1420] = 0;
  _$jscoverage['core/domUtils.js'][1425] = 0;
  _$jscoverage['core/domUtils.js'][1427] = 0;
  _$jscoverage['core/domUtils.js'][1471] = 0;
  _$jscoverage['core/domUtils.js'][1473] = 0;
  _$jscoverage['core/domUtils.js'][1474] = 0;
  _$jscoverage['core/domUtils.js'][1476] = 0;
  _$jscoverage['core/domUtils.js'][1477] = 0;
  _$jscoverage['core/domUtils.js'][1478] = 0;
  _$jscoverage['core/domUtils.js'][1480] = 0;
  _$jscoverage['core/domUtils.js'][1528] = 0;
  _$jscoverage['core/domUtils.js'][1529] = 0;
  _$jscoverage['core/domUtils.js'][1530] = 0;
  _$jscoverage['core/domUtils.js'][1531] = 0;
  _$jscoverage['core/domUtils.js'][1532] = 0;
  _$jscoverage['core/domUtils.js'][1581] = 0;
  _$jscoverage['core/domUtils.js'][1582] = 0;
  _$jscoverage['core/domUtils.js'][1584] = 0;
  _$jscoverage['core/domUtils.js'][1585] = 0;
  _$jscoverage['core/domUtils.js'][1586] = 0;
  _$jscoverage['core/domUtils.js'][1587] = 0;
  _$jscoverage['core/domUtils.js'][1590] = 0;
  _$jscoverage['core/domUtils.js'][1603] = 0;
  _$jscoverage['core/domUtils.js'][1628] = 0;
  _$jscoverage['core/domUtils.js'][1630] = 0;
  _$jscoverage['core/domUtils.js'][1631] = 0;
  _$jscoverage['core/domUtils.js'][1633] = 0;
  _$jscoverage['core/domUtils.js'][1635] = 0;
  _$jscoverage['core/domUtils.js'][1636] = 0;
  _$jscoverage['core/domUtils.js'][1638] = 0;
  _$jscoverage['core/domUtils.js'][1643] = 0;
  _$jscoverage['core/domUtils.js'][1644] = 0;
  _$jscoverage['core/domUtils.js'][1673] = 0;
  _$jscoverage['core/domUtils.js'][1674] = 0;
  _$jscoverage['core/domUtils.js'][1703] = 0;
  _$jscoverage['core/domUtils.js'][1704] = 0;
  _$jscoverage['core/domUtils.js'][1705] = 0;
  _$jscoverage['core/domUtils.js'][1735] = 0;
  _$jscoverage['core/domUtils.js'][1736] = 0;
  _$jscoverage['core/domUtils.js'][1737] = 0;
  _$jscoverage['core/domUtils.js'][1747] = 0;
  _$jscoverage['core/domUtils.js'][1748] = 0;
  _$jscoverage['core/domUtils.js'][1750] = 0;
  _$jscoverage['core/domUtils.js'][1798] = 0;
  _$jscoverage['core/domUtils.js'][1799] = 0;
  _$jscoverage['core/domUtils.js'][1800] = 0;
  _$jscoverage['core/domUtils.js'][1802] = 0;
  _$jscoverage['core/domUtils.js'][1803] = 0;
  _$jscoverage['core/domUtils.js'][1804] = 0;
  _$jscoverage['core/domUtils.js'][1806] = 0;
  _$jscoverage['core/domUtils.js'][1808] = 0;
  _$jscoverage['core/domUtils.js'][1822] = 0;
  _$jscoverage['core/domUtils.js'][1823] = 0;
  _$jscoverage['core/domUtils.js'][1839] = 0;
  _$jscoverage['core/domUtils.js'][1840] = 0;
  _$jscoverage['core/domUtils.js'][1841] = 0;
  _$jscoverage['core/domUtils.js'][1853] = 0;
  _$jscoverage['core/domUtils.js'][1854] = 0;
  _$jscoverage['core/domUtils.js'][1856] = 0;
  _$jscoverage['core/domUtils.js'][1862] = 0;
  _$jscoverage['core/domUtils.js'][1863] = 0;
  _$jscoverage['core/domUtils.js'][1869] = 0;
  _$jscoverage['core/domUtils.js'][1870] = 0;
  _$jscoverage['core/domUtils.js'][1876] = 0;
  _$jscoverage['core/domUtils.js'][1877] = 0;
  _$jscoverage['core/domUtils.js'][1878] = 0;
  _$jscoverage['core/domUtils.js'][1879] = 0;
  _$jscoverage['core/domUtils.js'][1880] = 0;
  _$jscoverage['core/domUtils.js'][1882] = 0;
  _$jscoverage['core/domUtils.js'][1883] = 0;
  _$jscoverage['core/domUtils.js'][1894] = 0;
  _$jscoverage['core/domUtils.js'][1905] = 0;
  _$jscoverage['core/domUtils.js'][1910] = 0;
  _$jscoverage['core/domUtils.js'][1914] = 0;
  _$jscoverage['core/domUtils.js'][1915] = 0;
  _$jscoverage['core/domUtils.js'][1916] = 0;
  _$jscoverage['core/domUtils.js'][1917] = 0;
  _$jscoverage['core/domUtils.js'][1918] = 0;
  _$jscoverage['core/domUtils.js'][1919] = 0;
  _$jscoverage['core/domUtils.js'][1922] = 0;
  _$jscoverage['core/domUtils.js'][1923] = 0;
  _$jscoverage['core/domUtils.js'][1924] = 0;
  _$jscoverage['core/domUtils.js'][1927] = 0;
  _$jscoverage['core/domUtils.js'][1928] = 0;
  _$jscoverage['core/domUtils.js'][1929] = 0;
  _$jscoverage['core/domUtils.js'][1931] = 0;
  _$jscoverage['core/domUtils.js'][1932] = 0;
  _$jscoverage['core/domUtils.js'][1933] = 0;
  _$jscoverage['core/domUtils.js'][1935] = 0;
  _$jscoverage['core/domUtils.js'][1936] = 0;
  _$jscoverage['core/domUtils.js'][1938] = 0;
  _$jscoverage['core/domUtils.js'][1939] = 0;
  _$jscoverage['core/domUtils.js'][1940] = 0;
  _$jscoverage['core/domUtils.js'][1941] = 0;
  _$jscoverage['core/domUtils.js'][1942] = 0;
  _$jscoverage['core/domUtils.js'][1944] = 0;
  _$jscoverage['core/domUtils.js'][1946] = 0;
  _$jscoverage['core/domUtils.js'][1947] = 0;
  _$jscoverage['core/domUtils.js'][1949] = 0;
  _$jscoverage['core/domUtils.js'][1950] = 0;
  _$jscoverage['core/domUtils.js'][1951] = 0;
  _$jscoverage['core/domUtils.js'][1953] = 0;
  _$jscoverage['core/domUtils.js'][1954] = 0;
  _$jscoverage['core/domUtils.js'][1956] = 0;
  _$jscoverage['core/domUtils.js'][1960] = 0;
  _$jscoverage['core/domUtils.js'][1987] = 0;
  _$jscoverage['core/domUtils.js'][1988] = 0;
  _$jscoverage['core/domUtils.js'][1989] = 0;
  _$jscoverage['core/domUtils.js'][1990] = 0;
  _$jscoverage['core/domUtils.js'][1991] = 0;
  _$jscoverage['core/domUtils.js'][1993] = 0;
  _$jscoverage['core/domUtils.js'][1994] = 0;
  _$jscoverage['core/domUtils.js'][1995] = 0;
  _$jscoverage['core/domUtils.js'][1998] = 0;
  _$jscoverage['core/domUtils.js'][2028] = 0;
  _$jscoverage['core/domUtils.js'][2029] = 0;
  _$jscoverage['core/domUtils.js'][2030] = 0;
  _$jscoverage['core/domUtils.js'][2031] = 0;
  _$jscoverage['core/domUtils.js'][2032] = 0;
  _$jscoverage['core/domUtils.js'][2033] = 0;
  _$jscoverage['core/domUtils.js'][2034] = 0;
  _$jscoverage['core/domUtils.js'][2036] = 0;
  _$jscoverage['core/domUtils.js'][2037] = 0;
  _$jscoverage['core/domUtils.js'][2065] = 0;
  _$jscoverage['core/domUtils.js'][2066] = 0;
  _$jscoverage['core/domUtils.js'][2067] = 0;
  _$jscoverage['core/domUtils.js'][2133] = 0;
  _$jscoverage['core/domUtils.js'][2134] = 0;
  _$jscoverage['core/domUtils.js'][2135] = 0;
  _$jscoverage['core/domUtils.js'][2137] = 0;
  _$jscoverage['core/domUtils.js'][2163] = 0;
  _$jscoverage['core/domUtils.js'][2174] = 0;
  _$jscoverage['core/domUtils.js'][2196] = 0;
  _$jscoverage['core/domUtils.js'][2266] = 0;
  _$jscoverage['core/domUtils.js'][2267] = 0;
  _$jscoverage['core/domUtils.js'][2268] = 0;
  _$jscoverage['core/domUtils.js'][2269] = 0;
  _$jscoverage['core/domUtils.js'][2270] = 0;
  _$jscoverage['core/domUtils.js'][2273] = 0;
  _$jscoverage['core/domUtils.js'][2274] = 0;
  _$jscoverage['core/domUtils.js'][2276] = 0;
  _$jscoverage['core/domUtils.js'][2280] = 0;
  _$jscoverage['core/domUtils.js'][2281] = 0;
  _$jscoverage['core/domUtils.js'][2282] = 0;
  _$jscoverage['core/domUtils.js'][2284] = 0;
  _$jscoverage['core/domUtils.js'][2285] = 0;
  _$jscoverage['core/domUtils.js'][2287] = 0;
  _$jscoverage['core/domUtils.js'][2288] = 0;
  _$jscoverage['core/domUtils.js'][2289] = 0;
  _$jscoverage['core/domUtils.js'][2290] = 0;
  _$jscoverage['core/domUtils.js'][2291] = 0;
  _$jscoverage['core/domUtils.js'][2293] = 0;
  _$jscoverage['core/domUtils.js'][2296] = 0;
  _$jscoverage['core/domUtils.js'][2297] = 0;
  _$jscoverage['core/domUtils.js'][2298] = 0;
  _$jscoverage['core/domUtils.js'][2299] = 0;
  _$jscoverage['core/domUtils.js'][2300] = 0;
  _$jscoverage['core/domUtils.js'][2301] = 0;
  _$jscoverage['core/domUtils.js'][2304] = 0;
  _$jscoverage['core/domUtils.js'][2307] = 0;
}
_$jscoverage['core/domUtils.js'].source = ["<span class=\"c\">/**</span>","<span class=\"c\"> * Dom&#25805;&#20316;&#24037;&#20855;&#21253;</span>","<span class=\"c\"> * @file</span>","<span class=\"c\"> * @module UE.dom.domUtils</span>","<span class=\"c\"> * @since 1.2.6.1</span>","<span class=\"c\"> */</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Dom&#25805;&#20316;&#24037;&#20855;&#21253;</span>","<span class=\"c\"> * @unfile</span>","<span class=\"c\"> * @module UE.dom.domUtils</span>","<span class=\"c\"> */</span>","","<span class=\"c\">//getNode(node, 'firstChild', 'nextSibling', startFromChild, filterFn, guard);</span>","<span class=\"k\">function</span> getNode<span class=\"k\">(</span> node<span class=\"k\">,</span> start<span class=\"k\">,</span> ltr<span class=\"k\">,</span> startFromChild<span class=\"k\">,</span> fn<span class=\"k\">,</span> guard <span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">var</span> tmpNode <span class=\"k\">=</span> startFromChild <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">[</span>start<span class=\"k\">],</span>","        parent<span class=\"k\">;</span>","    <span class=\"k\">!</span>tmpNode <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span>tmpNode <span class=\"k\">=</span> node<span class=\"k\">[</span>ltr<span class=\"k\">]);</span>","    <span class=\"k\">while</span> <span class=\"k\">(!</span>tmpNode <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span>parent <span class=\"k\">=</span> <span class=\"k\">(</span>parent <span class=\"k\">||</span> node<span class=\"k\">).</span>parentNode<span class=\"k\">))</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>tagName <span class=\"k\">==</span> <span class=\"s\">'BODY'</span> <span class=\"k\">||</span> guard <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>guard<span class=\"k\">(</span>parent<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>","        tmpNode <span class=\"k\">=</span> parent<span class=\"k\">[</span>ltr<span class=\"k\">];</span>","    <span class=\"k\">}</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span>tmpNode <span class=\"k\">&amp;&amp;</span> fn <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>fn<span class=\"k\">(</span>tmpNode<span class=\"k\">))</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span>  getNode<span class=\"k\">(</span>tmpNode<span class=\"k\">,</span> start<span class=\"k\">,</span> ltr<span class=\"k\">,</span> <span class=\"k\">false</span><span class=\"k\">,</span> fn<span class=\"k\">);</span>","    <span class=\"k\">}</span>","    <span class=\"k\">return</span> tmpNode<span class=\"k\">;</span>","<span class=\"k\">}</span>","<span class=\"k\">var</span> attrFix <span class=\"k\">=</span> ie <span class=\"k\">&amp;&amp;</span> browser<span class=\"k\">.</span>version <span class=\"k\">&lt;</span> <span class=\"s\">9</span> <span class=\"k\">?</span> <span class=\"k\">{</span>","        tabindex<span class=\"k\">:</span><span class=\"s\">\"tabIndex\"</span><span class=\"k\">,</span>","        readonly<span class=\"k\">:</span><span class=\"s\">\"readOnly\"</span><span class=\"k\">,</span>","        <span class=\"s\">\"for\"</span><span class=\"k\">:</span><span class=\"s\">\"htmlFor\"</span><span class=\"k\">,</span>","        <span class=\"s\">\"class\"</span><span class=\"k\">:</span><span class=\"s\">\"className\"</span><span class=\"k\">,</span>","        maxlength<span class=\"k\">:</span><span class=\"s\">\"maxLength\"</span><span class=\"k\">,</span>","        cellspacing<span class=\"k\">:</span><span class=\"s\">\"cellSpacing\"</span><span class=\"k\">,</span>","        cellpadding<span class=\"k\">:</span><span class=\"s\">\"cellPadding\"</span><span class=\"k\">,</span>","        rowspan<span class=\"k\">:</span><span class=\"s\">\"rowSpan\"</span><span class=\"k\">,</span>","        colspan<span class=\"k\">:</span><span class=\"s\">\"colSpan\"</span><span class=\"k\">,</span>","        usemap<span class=\"k\">:</span><span class=\"s\">\"useMap\"</span><span class=\"k\">,</span>","        frameborder<span class=\"k\">:</span><span class=\"s\">\"frameBorder\"</span>","    <span class=\"k\">}</span> <span class=\"k\">:</span> <span class=\"k\">{</span>","        tabindex<span class=\"k\">:</span><span class=\"s\">\"tabIndex\"</span><span class=\"k\">,</span>","        readonly<span class=\"k\">:</span><span class=\"s\">\"readOnly\"</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    styleBlock <span class=\"k\">=</span> utils<span class=\"k\">.</span>listToMap<span class=\"k\">([</span>","        <span class=\"s\">'-webkit-box'</span><span class=\"k\">,</span> <span class=\"s\">'-moz-box'</span><span class=\"k\">,</span> <span class=\"s\">'block'</span> <span class=\"k\">,</span>","        <span class=\"s\">'list-item'</span> <span class=\"k\">,</span> <span class=\"s\">'table'</span> <span class=\"k\">,</span> <span class=\"s\">'table-row-group'</span> <span class=\"k\">,</span>","        <span class=\"s\">'table-header-group'</span><span class=\"k\">,</span> <span class=\"s\">'table-footer-group'</span> <span class=\"k\">,</span>","        <span class=\"s\">'table-row'</span> <span class=\"k\">,</span> <span class=\"s\">'table-column-group'</span> <span class=\"k\">,</span> <span class=\"s\">'table-column'</span> <span class=\"k\">,</span>","        <span class=\"s\">'table-cell'</span> <span class=\"k\">,</span> <span class=\"s\">'table-caption'</span>","    <span class=\"k\">]);</span>","<span class=\"k\">var</span> domUtils <span class=\"k\">=</span> dom<span class=\"k\">.</span>domUtils <span class=\"k\">=</span> <span class=\"k\">{</span>","    <span class=\"c\">//&#33410;&#28857;&#24120;&#37327;</span>","    NODE_ELEMENT<span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span>","    NODE_DOCUMENT<span class=\"k\">:</span><span class=\"s\">9</span><span class=\"k\">,</span>","    NODE_TEXT<span class=\"k\">:</span><span class=\"s\">3</span><span class=\"k\">,</span>","    NODE_COMMENT<span class=\"k\">:</span><span class=\"s\">8</span><span class=\"k\">,</span>","    NODE_DOCUMENT_FRAGMENT<span class=\"k\">:</span><span class=\"s\">11</span><span class=\"k\">,</span>","","    <span class=\"c\">//&#20301;&#32622;&#20851;&#31995;</span>","    POSITION_IDENTICAL<span class=\"k\">:</span><span class=\"s\">0</span><span class=\"k\">,</span>","    POSITION_DISCONNECTED<span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span>","    POSITION_FOLLOWING<span class=\"k\">:</span><span class=\"s\">2</span><span class=\"k\">,</span>","    POSITION_PRECEDING<span class=\"k\">:</span><span class=\"s\">4</span><span class=\"k\">,</span>","    POSITION_IS_CONTAINED<span class=\"k\">:</span><span class=\"s\">8</span><span class=\"k\">,</span>","    POSITION_CONTAINS<span class=\"k\">:</span><span class=\"s\">16</span><span class=\"k\">,</span>","    <span class=\"c\">//ie6&#20351;&#29992;&#20854;&#20182;&#30340;&#20250;&#26377;&#19968;&#27573;&#31354;&#30333;&#20986;&#29616;</span>","    fillChar<span class=\"k\">:</span>ie <span class=\"k\">&amp;&amp;</span> browser<span class=\"k\">.</span>version <span class=\"k\">==</span> <span class=\"s\">'6'</span> <span class=\"k\">?</span> <span class=\"s\">'</span><span class=\"t\">\\u</span><span class=\"s\">feff'</span> <span class=\"k\">:</span> <span class=\"s\">'</span><span class=\"t\">\\u</span><span class=\"s\">200B'</span><span class=\"k\">,</span>","    <span class=\"c\">//-------------------------Node&#37096;&#20998;--------------------------------</span>","    keys<span class=\"k\">:</span><span class=\"k\">{</span>","        <span class=\"c\">/*Backspace*/</span> <span class=\"s\">8</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"c\">/*Delete*/</span> <span class=\"s\">46</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span>","        <span class=\"c\">/*Shift*/</span> <span class=\"s\">16</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"c\">/*Ctrl*/</span> <span class=\"s\">17</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"c\">/*Alt*/</span> <span class=\"s\">18</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span>","        <span class=\"s\">37</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"s\">38</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"s\">39</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span> <span class=\"s\">40</span><span class=\"k\">:</span><span class=\"s\">1</span><span class=\"k\">,</span>","        <span class=\"s\">13</span><span class=\"k\">:</span><span class=\"s\">1</span> <span class=\"c\">/*enter*/</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#33719;&#21462;&#33410;&#28857;A&#30456;&#23545;&#20110;&#33410;&#28857;B&#30340;&#20301;&#32622;&#20851;&#31995;</span>","<span class=\"c\">     * @method getPosition</span>","<span class=\"c\">     * @param { Node } nodeA &#38656;&#35201;&#26597;&#35810;&#20301;&#32622;&#20851;&#31995;&#30340;&#33410;&#28857;A</span>","<span class=\"c\">     * @param { Node } nodeB &#38656;&#35201;&#26597;&#35810;&#20301;&#32622;&#20851;&#31995;&#30340;&#33410;&#28857;B</span>","<span class=\"c\">     * @return { Number } &#33410;&#28857;A&#19982;&#33410;&#28857;B&#30340;&#20851;&#31995;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * //output: 20</span>","<span class=\"c\">     * var position = UE.dom.domUtils.getPosition( document.documentElement, document.body );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * switch ( position ) {</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      case 0:</span>","<span class=\"c\">     *          console.log('&#20803;&#32032;&#30456;&#21516;');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *      case 1:</span>","<span class=\"c\">     *          console.log('&#20004;&#20010;&#33410;&#28857;&#22312;&#19981;&#21516;&#30340;&#25991;&#26723;&#20013;');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *      case 2:</span>","<span class=\"c\">     *          console.log('&#33410;&#28857;A&#22312;&#33410;&#28857;B&#20043;&#21518;');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *      case 4;</span>","<span class=\"c\">     *          console.log('&#33410;&#28857;A&#22312;&#33410;&#28857;B&#20043;&#21069;');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *      case 8:</span>","<span class=\"c\">     *          console.log('&#33410;&#28857;A&#34987;&#33410;&#28857;B&#21253;&#21547;');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *      case 10:</span>","<span class=\"c\">     *          console.log('&#33410;&#28857;A&#34987;&#33410;&#28857;B&#21253;&#21547;&#19988;&#33410;&#28857;A&#22312;&#33410;&#28857;B&#20043;&#21518;');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *      case 16:</span>","<span class=\"c\">     *          console.log('&#33410;&#28857;A&#21253;&#21547;&#33410;&#28857;B');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *      case 20:</span>","<span class=\"c\">     *          console.log('&#33410;&#28857;A&#21253;&#21547;&#33410;&#28857;B&#19988;&#33410;&#28857;A&#22312;&#33410;&#28857;B&#20043;&#21069;');</span>","<span class=\"c\">     *          break;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * }</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    getPosition<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>nodeA<span class=\"k\">,</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"c\">// &#22914;&#26524;&#20004;&#20010;&#33410;&#28857;&#26159;&#21516;&#19968;&#20010;&#33410;&#28857;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>nodeA <span class=\"k\">===</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"c\">// domUtils.POSITION_IDENTICAL</span>","            <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">var</span> node<span class=\"k\">,</span>","            parentsA <span class=\"k\">=</span> <span class=\"k\">[</span>nodeA<span class=\"k\">],</span>","            parentsB <span class=\"k\">=</span> <span class=\"k\">[</span>nodeB<span class=\"k\">];</span>","        node <span class=\"k\">=</span> nodeA<span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>node <span class=\"k\">=</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"c\">// &#22914;&#26524;nodeB&#26159;nodeA&#30340;&#31062;&#20808;&#33410;&#28857;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>node <span class=\"k\">===</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"c\">// domUtils.POSITION_IS_CONTAINED + domUtils.POSITION_FOLLOWING</span>","                <span class=\"k\">return</span> <span class=\"s\">10</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            parentsA<span class=\"k\">.</span>push<span class=\"k\">(</span>node<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        node <span class=\"k\">=</span> nodeB<span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>node <span class=\"k\">=</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"c\">// &#22914;&#26524;nodeA&#26159;nodeB&#30340;&#31062;&#20808;&#33410;&#28857;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>node <span class=\"k\">===</span> nodeA<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"c\">// domUtils.POSITION_CONTAINS + domUtils.POSITION_PRECEDING</span>","                <span class=\"k\">return</span> <span class=\"s\">20</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            parentsB<span class=\"k\">.</span>push<span class=\"k\">(</span>node<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        parentsA<span class=\"k\">.</span>reverse<span class=\"k\">();</span>","        parentsB<span class=\"k\">.</span>reverse<span class=\"k\">();</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>parentsA<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">]</span> <span class=\"k\">!==</span> parentsB<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">])</span> <span class=\"k\">{</span>","            <span class=\"c\">// domUtils.POSITION_DISCONNECTED</span>","            <span class=\"k\">return</span> <span class=\"s\">1</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">var</span> i <span class=\"k\">=</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>i<span class=\"k\">++,</span> parentsA<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">===</span> parentsB<span class=\"k\">[</span>i<span class=\"k\">])</span> <span class=\"k\">{</span>","        <span class=\"k\">}</span>","        nodeA <span class=\"k\">=</span> parentsA<span class=\"k\">[</span>i<span class=\"k\">];</span>","        nodeB <span class=\"k\">=</span> parentsB<span class=\"k\">[</span>i<span class=\"k\">];</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>nodeA <span class=\"k\">=</span> nodeA<span class=\"k\">.</span>nextSibling<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>nodeA <span class=\"k\">===</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"c\">// domUtils.POSITION_PRECEDING</span>","                <span class=\"k\">return</span> <span class=\"s\">4</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        <span class=\"c\">// domUtils.POSITION_FOLLOWING</span>","        <span class=\"k\">return</span>  <span class=\"s\">2</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26816;&#27979;&#33410;&#28857;node&#22312;&#29238;&#33410;&#28857;&#20013;&#30340;&#32034;&#24341;&#20301;&#32622;</span>","<span class=\"c\">     * @method getNodeIndex</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Number } &#35813;&#33410;&#28857;&#22312;&#29238;&#33410;&#28857;&#20013;&#30340;&#20301;&#32622;</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26816;&#27979;&#33410;&#28857;node&#22312;&#29238;&#33410;&#28857;&#20013;&#30340;&#32034;&#24341;&#20301;&#32622;&#65292; &#26681;&#25454;&#32473;&#23450;&#30340;mergeTextNode&#21442;&#25968;&#20915;&#23450;&#26159;&#21542;&#35201;&#21512;&#24182;&#22810;&#20010;&#36830;&#32493;&#30340;&#25991;&#26412;&#33410;&#28857;&#20026;&#19968;&#20010;&#33410;&#28857;</span>","<span class=\"c\">     * @method getNodeIndex</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { Boolean } ignoreTextNode &#26159;&#21542;&#24573;&#30053;&#25991;&#26412;&#33410;&#28857;</span>","<span class=\"c\">     * @return { Number } &#35813;&#33410;&#28857;&#22312;&#29238;&#33410;&#28857;&#20013;&#30340;&#20301;&#32622;</span>","<span class=\"c\">     */</span>","    getNodeIndex<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> ignoreTextNode<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> preNode <span class=\"k\">=</span> node<span class=\"k\">,</span>","            i <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>preNode <span class=\"k\">=</span> preNode<span class=\"k\">.</span>previousSibling<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>ignoreTextNode <span class=\"k\">&amp;&amp;</span> preNode<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">3</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span><span class=\"k\">(</span>preNode<span class=\"k\">.</span>nodeType <span class=\"k\">!=</span> preNode<span class=\"k\">.</span>nextSibling<span class=\"k\">.</span>nodeType <span class=\"k\">)</span><span class=\"k\">{</span>","                    i<span class=\"k\">++;</span>","                <span class=\"k\">}</span>","                <span class=\"k\">continue</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            i<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=\"c\">/**</span>","<span class=\"c\">     * &#26816;&#27979;&#33410;&#28857;node&#26159;&#21542;&#22312;&#32473;&#23450;doc&#30340;&#26641;&#19978;&#65292;&#23454;&#36136;&#19978;&#26159;&#26816;&#27979;&#35813;&#33410;&#28857;&#26159;&#21542;&#22312;&#32473;&#23450;&#30340;dom&#26641;&#19978;</span>","<span class=\"c\">     * @method inDoc</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { DomDocument } doc &#38656;&#35201;&#26816;&#27979;&#30340;document&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#35813;&#33410;&#28857;node&#26159;&#21542;&#22312;&#32473;&#23450;&#30340;document&#30340;dom&#26641;&#19978;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * var node = document.createElement(\"div\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: false</span>","<span class=\"c\">     * console.log( UE.do.domUtils.inDoc( node, document ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * document.body.appendChild( node );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: true</span>","<span class=\"c\">     * console.log( UE.do.domUtils.inDoc( node, document ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    inDoc<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> doc<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> domUtils<span class=\"k\">.</span>getPosition<span class=\"k\">(</span>node<span class=\"k\">,</span> doc<span class=\"k\">)</span> <span class=\"k\">==</span> <span class=\"s\">10</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26681;&#25454;&#32473;&#23450;&#30340;&#36807;&#28388;&#35268;&#21017;filterFn&#65292; &#26597;&#25214;&#31526;&#21512;&#35813;&#36807;&#28388;&#35268;&#21017;&#30340;node&#33410;&#28857;&#30340;&#31062;&#20808;&#33410;&#28857;&#65292;</span>","<span class=\"c\">     * &#26597;&#25214;&#30340;&#36807;&#31243;&#20013;&#19981;&#21253;&#21547;&#33258;&#36523;&#33410;&#28857;&#12290;</span>","<span class=\"c\">     * @method findParent</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26597;&#25214;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Function } filterFn &#33258;&#23450;&#20041;&#30340;&#36807;&#28388;&#26041;&#27861;&#12290;</span>","<span class=\"c\">     * @warning &#26597;&#25214;&#30340;&#32456;&#28857;&#26159;&#21040;body&#33410;&#28857;&#20026;&#27490;</span>","<span class=\"c\">     * @remind &#33258;&#23450;&#20041;&#30340;&#36807;&#28388;&#26041;&#27861;filterFn&#25509;&#21463;&#19968;&#20010;Node&#23545;&#35937;&#20316;&#20026;&#21442;&#25968;&#65292; &#35813;&#23545;&#35937;&#20195;&#34920;&#24403;&#21069;&#25191;&#34892;&#26816;&#27979;&#30340;&#31062;&#20808;&#33410;&#28857;&#12290; &#22914;&#26524;&#35813;</span>","<span class=\"c\">     *          &#33410;&#28857;&#28385;&#36275;&#36807;&#28388;&#26465;&#20214;&#65292; &#21017;&#35201;&#27714;&#36820;&#22238;true&#65292; &#36825;&#26102;&#23558;&#30452;&#25509;&#36820;&#22238;&#35813;&#33410;&#28857;&#20316;&#20026;findParent()&#30340;&#32467;&#26524;&#65292; &#21542;&#21017;&#65292; &#35831;&#36820;&#22238;false&#12290;</span>","<span class=\"c\">     * @return { Node | Null } &#22914;&#26524;&#25214;&#21040;&#31526;&#21512;&#36807;&#28388;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#23601;&#36820;&#22238;&#35813;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var filterNode = UE.dom.domUtils.findParent( document.body.firstChild, function ( node ) {</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //&#30001;&#20110;&#26597;&#25214;&#30340;&#32456;&#28857;&#26159;body&#33410;&#28857;&#65292; &#25152;&#20197;&#27704;&#36828;&#20063;&#19981;&#20250;&#21305;&#37197;&#24403;&#21069;&#36807;&#28388;&#22120;&#30340;&#26465;&#20214;&#65292; &#21363;&#36825;&#37324;&#27704;&#36828;&#20250;&#36820;&#22238;false</span>","<span class=\"c\">     *     return node.tagName === \"HTML\";</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * } );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: true</span>","<span class=\"c\">     * console.log( filterNode === null );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26681;&#25454;&#32473;&#23450;&#30340;&#36807;&#28388;&#35268;&#21017;filterFn&#65292; &#26597;&#25214;&#31526;&#21512;&#35813;&#36807;&#28388;&#35268;&#21017;&#30340;node&#33410;&#28857;&#30340;&#31062;&#20808;&#33410;&#28857;&#65292;</span>","<span class=\"c\">     * &#26597;&#25214;&#30340;&#36807;&#31243;&#20013;&#26681;&#25454;includeSelf&#30340;&#20540;&#20915;&#23450;&#26159;&#21542;&#21253;&#21547;&#33258;&#36523;&#33410;&#28857;&#12290;</span>","<span class=\"c\">     * @method findParent</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26597;&#25214;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Function } filterFn &#33258;&#23450;&#20041;&#30340;&#36807;&#28388;&#26041;&#27861;&#12290;</span>","<span class=\"c\">     * @param { Boolean } includeSelf &#26597;&#25214;&#36807;&#31243;&#26159;&#21542;&#21253;&#21547;&#33258;&#36523;</span>","<span class=\"c\">     * @warning &#26597;&#25214;&#30340;&#32456;&#28857;&#26159;&#21040;body&#33410;&#28857;&#20026;&#27490;</span>","<span class=\"c\">     * @remind &#33258;&#23450;&#20041;&#30340;&#36807;&#28388;&#26041;&#27861;filterFn&#25509;&#21463;&#19968;&#20010;Node&#23545;&#35937;&#20316;&#20026;&#21442;&#25968;&#65292; &#35813;&#23545;&#35937;&#20195;&#34920;&#24403;&#21069;&#25191;&#34892;&#26816;&#27979;&#30340;&#31062;&#20808;&#33410;&#28857;&#12290; &#22914;&#26524;&#35813;</span>","<span class=\"c\">     *          &#33410;&#28857;&#28385;&#36275;&#36807;&#28388;&#26465;&#20214;&#65292; &#21017;&#35201;&#27714;&#36820;&#22238;true&#65292; &#36825;&#26102;&#23558;&#30452;&#25509;&#36820;&#22238;&#35813;&#33410;&#28857;&#20316;&#20026;findParent()&#30340;&#32467;&#26524;&#65292; &#21542;&#21017;&#65292; &#35831;&#36820;&#22238;false&#12290;</span>","<span class=\"c\">     * @remind &#22914;&#26524;includeSelf&#20026;true&#65292; &#21017;&#36807;&#28388;&#22120;&#31532;&#19968;&#27425;&#25191;&#34892;&#26102;&#30340;&#21442;&#25968;&#20250;&#26159;&#33410;&#28857;&#26412;&#36523;&#12290;</span>","<span class=\"c\">     *          &#21453;&#20043;&#65292; &#36807;&#28388;&#22120;&#31532;&#19968;&#27425;&#25191;&#34892;&#26102;&#30340;&#21442;&#25968;&#23558;&#26159;&#35813;&#33410;&#28857;&#30340;&#29238;&#33410;&#28857;&#12290;</span>","<span class=\"c\">     * @return { Node | Null } &#22914;&#26524;&#25214;&#21040;&#31526;&#21512;&#36807;&#28388;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#23601;&#36820;&#22238;&#35813;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;body&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      &lt;div id=\"test\"&gt;</span>","<span class=\"c\">     *      &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      &lt;script type=\"text/javascript\"&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *          //output: DIV, BODY</span>","<span class=\"c\">     *          var filterNode = UE.dom.domUtils.findParent( document.getElementById( \"test\" ), function ( node ) {</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *              console.log( node.tagName );</span>","<span class=\"c\">     *              return false;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *          }, true );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      &lt;/script&gt;</span>","<span class=\"c\">     * &lt;/body&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    findParent<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> filterFn<span class=\"k\">,</span> includeSelf<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>node <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isBody<span class=\"k\">(</span>node<span class=\"k\">))</span> <span class=\"k\">{</span>","            node <span class=\"k\">=</span> includeSelf <span class=\"k\">?</span> node <span class=\"k\">:</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","            <span class=\"k\">while</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>filterFn <span class=\"k\">||</span> filterFn<span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">||</span> domUtils<span class=\"k\">.</span>isBody<span class=\"k\">(</span>node<span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> filterFn <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>filterFn<span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>isBody<span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"k\">null</span> <span class=\"k\">:</span> node<span class=\"k\">;</span>","                <span class=\"k\">}</span>","                node <span class=\"k\">=</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","            <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\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26597;&#25214;node&#30340;&#33410;&#28857;&#21517;&#20026;tagName&#30340;&#31062;&#20808;&#33410;&#28857;&#65292; &#26597;&#25214;&#36807;&#31243;&#20013;&#19981;&#21253;&#21547;node&#33410;&#28857;&#33258;&#36523;</span>","<span class=\"c\">     * @method findParentByTagName</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26597;&#25214;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { Array } tagNames &#38656;&#35201;&#26597;&#25214;&#30340;&#29238;&#33410;&#28857;&#30340;&#21517;&#31216;&#25968;&#32452;</span>","<span class=\"c\">     * @warning &#26597;&#25214;&#30340;&#32456;&#28857;&#26159;&#21040;body&#33410;&#28857;&#20026;&#27490;</span>","<span class=\"c\">     * @return { Node | NULL } &#22914;&#26524;&#25214;&#21040;&#31526;&#21512;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#21017;&#36820;&#22238;&#35813;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName(\"div\")[0], [ \"BODY\" ] );</span>","<span class=\"c\">     * //output: BODY</span>","<span class=\"c\">     * console.log( node.tagName );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26597;&#25214;node&#30340;&#33410;&#28857;&#21517;&#20026;tagName&#30340;&#31062;&#20808;&#33410;&#28857;&#65292; &#26597;&#25214;&#36807;&#31243;&#20013;&#26681;&#25454;includeSelf&#30340;&#20540;&#20915;&#23450;&#26159;&#21542;&#21253;&#21547;node&#33410;&#28857;&#33258;&#36523;</span>","<span class=\"c\">     * @method findParentByTagName</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26597;&#25214;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { Array } tagNames &#38656;&#35201;&#26597;&#25214;&#30340;&#29238;&#33410;&#28857;&#30340;&#21517;&#31216;&#25968;&#32452;</span>","<span class=\"c\">     * @param { Boolean } includeSelf &#26597;&#25214;&#36807;&#31243;&#26159;&#21542;&#21253;&#21547;node&#33410;&#28857;&#33258;&#36523;</span>","<span class=\"c\">     * @warning &#26597;&#25214;&#30340;&#32456;&#28857;&#26159;&#21040;body&#33410;&#28857;&#20026;&#27490;</span>","<span class=\"c\">     * @return { Node | NULL } &#22914;&#26524;&#25214;&#21040;&#31526;&#21512;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#21017;&#36820;&#22238;&#35813;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var queryTarget = document.getElementsByTagName(\"div\")[0];</span>","<span class=\"c\">     * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ \"DIV\" ], true );</span>","<span class=\"c\">     * //output: true</span>","<span class=\"c\">     * console.log( queryTarget === node );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26597;&#25214;node&#30340;&#33410;&#28857;&#21517;&#20026;tagName&#30340;&#31062;&#20808;&#33410;&#28857;&#65292;&#24182;&#19988;&#35813;&#31062;&#20808;&#33410;&#28857;&#19981;&#28385;&#36275;excludeFn&#36807;&#28388;&#22120;&#30340;&#36807;&#28388;&#35201;&#27714;&#65292;</span>","<span class=\"c\">     * &#26597;&#25214;&#36807;&#31243;&#20013;&#26681;&#25454;includeSelf&#30340;&#20540;&#20915;&#23450;&#26159;&#21542;&#21253;&#21547;node&#33410;&#28857;&#33258;&#36523;&#65292;</span>","<span class=\"c\">     * @method findParentByTagName</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26597;&#25214;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { Array } tagNames &#38656;&#35201;&#26597;&#25214;&#30340;&#29238;&#33410;&#28857;&#30340;&#21517;&#31216;&#25968;&#32452;</span>","<span class=\"c\">     * @param { Boolean } includeSelf &#26597;&#25214;&#36807;&#31243;&#26159;&#21542;&#21253;&#21547;node&#33410;&#28857;&#33258;&#36523;</span>","<span class=\"c\">     * @param { Function } excludeFn &#26597;&#25214;&#36807;&#31243;&#20013;&#24212;&#29992;&#30340;&#36807;&#28388;&#22120;&#65292; &#22914;&#26524;&#35813;&#36807;&#28388;&#22120;&#23545;&#32473;&#23450;&#30340;&#33410;&#28857;&#36820;&#22238;true&#65292;</span>","<span class=\"c\">     *                                  &#21017;&#35813;&#33410;&#28857;&#23558;&#34987;&#25490;&#38500;&#22312;&#26597;&#35810;&#32467;&#26524;&#20043;&#22806;&#12290;</span>","<span class=\"c\">     * @remind &#26597;&#25214;&#36807;&#28388;&#22120;excludeFn&#35201;&#27714;&#23545;&#19981;&#24212;&#35813;&#34987;&#21305;&#37197;&#30340;&#33410;&#28857;&#24212;&#35813;&#36820;&#22238;true</span>","<span class=\"c\">     * @warning &#26597;&#25214;&#30340;&#32456;&#28857;&#26159;&#21040;body&#33410;&#28857;&#20026;&#27490;</span>","<span class=\"c\">     * @return { Node | NULL } &#22914;&#26524;&#25214;&#21040;&#31526;&#21512;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#21017;&#36820;&#22238;&#35813;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var queryTarget = document.getElementsByTagName(\"div\")[0];</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //&#38656;&#35201;&#26597;&#25214;&#30340;&#33410;&#28857;&#21644;&#36807;&#28388;&#22120;&#30340;&#36807;&#28388;&#26465;&#20214;&#21018;&#22909;&#20914;&#31361;&#65292; &#25191;&#34892;&#32467;&#26524;&#23558;&#27704;&#36828;&#20026;NULL</span>","<span class=\"c\">     * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ \"DIV\" ], false, function ( node ) {</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      return node.tagName.toLowerCase() === 'div';</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * } );</span>","<span class=\"c\">     * //output: true</span>","<span class=\"c\">     * console.log( queryTarget === null );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    findParentByTagName<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> tagNames<span class=\"k\">,</span> includeSelf<span class=\"k\">,</span> excludeFn<span class=\"k\">)</span> <span class=\"k\">{</span>","        tagNames <span class=\"k\">=</span> utils<span class=\"k\">.</span>listToMap<span class=\"k\">(</span>utils<span class=\"k\">.</span>isArray<span class=\"k\">(</span>tagNames<span class=\"k\">)</span> <span class=\"k\">?</span> tagNames <span class=\"k\">:</span> <span class=\"k\">[</span>tagNames<span class=\"k\">]);</span>","        <span class=\"k\">return</span> domUtils<span class=\"k\">.</span>findParent<span class=\"k\">(</span>node<span class=\"k\">,</span> <span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> tagNames<span class=\"k\">[</span>node<span class=\"k\">.</span>tagName<span class=\"k\">]</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!(</span>excludeFn <span class=\"k\">&amp;&amp;</span> excludeFn<span class=\"k\">(</span>node<span class=\"k\">));</span>","        <span class=\"k\">}</span><span class=\"k\">,</span> includeSelf<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/*</span>","<span class=\"c\">     * &#26597;&#25214;&#33410;&#28857;node&#30340;&#31062;&#20808;&#33410;&#28857;&#38598;&#21512;</span>","<span class=\"c\">     * @name findParents</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.findParents(node)  =&gt; Array  //&#36820;&#22238;&#19968;&#20010;&#31062;&#20808;&#33410;&#28857;&#25968;&#32452;&#38598;&#21512;&#65292;&#19981;&#21253;&#21547;&#33258;&#36523;</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.findParents(node,includeSelf)  =&gt; Array  //&#36820;&#22238;&#19968;&#20010;&#31062;&#20808;&#33410;&#28857;&#25968;&#32452;&#38598;&#21512;&#65292;includeSelf&#25351;&#23450;&#26159;&#21542;&#21253;&#21547;&#33258;&#36523;</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn)  =&gt; Array  //&#36820;&#22238;&#19968;&#20010;&#31062;&#20808;&#33410;&#28857;&#25968;&#32452;&#38598;&#21512;&#65292;filterFn&#25351;&#23450;&#36807;&#28388;&#26465;&#20214;&#65292;&#36820;&#22238;true&#30340;node&#23558;&#34987;&#36873;&#21462;</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst)  =&gt; Array  //&#36820;&#22238;&#19968;&#20010;&#31062;&#20808;&#33410;&#28857;&#25968;&#32452;&#38598;&#21512;&#65292;closerFirst&#20026;true&#30340;&#35805;&#65292;node&#30340;&#30452;&#25509;&#29238;&#20146;&#33410;&#28857;&#26159;&#25968;&#32452;&#30340;&#31532;0&#20010;</span>","<span class=\"c\">     */</span>","    findParents<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> includeSelf<span class=\"k\">,</span> filterFn<span class=\"k\">,</span> closerFirst<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> parents <span class=\"k\">=</span> includeSelf <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span> filterFn <span class=\"k\">&amp;&amp;</span> filterFn<span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">||</span> <span class=\"k\">!</span>filterFn <span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"k\">[</span>node<span class=\"k\">]</span> <span class=\"k\">:</span> <span class=\"k\">[];</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>node <span class=\"k\">=</span> domUtils<span class=\"k\">.</span>findParent<span class=\"k\">(</span>node<span class=\"k\">,</span> filterFn<span class=\"k\">))</span> <span class=\"k\">{</span>","            parents<span class=\"k\">.</span>push<span class=\"k\">(</span>node<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> closerFirst <span class=\"k\">?</span> parents <span class=\"k\">:</span> parents<span class=\"k\">.</span>reverse<span class=\"k\">();</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#22312;&#33410;&#28857;node&#21518;&#38754;&#25554;&#20837;&#26032;&#33410;&#28857;newNode</span>","<span class=\"c\">     * @method insertAfter</span>","<span class=\"c\">     * @param { Node } node &#30446;&#26631;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Node } newNode &#26032;&#25554;&#20837;&#30340;&#33410;&#28857;&#65292; &#35813;&#33410;&#28857;&#23558;&#32622;&#20110;&#30446;&#26631;&#33410;&#28857;&#20043;&#21518;</span>","<span class=\"c\">     * @return { Node } &#26032;&#25554;&#20837;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     */</span>","    insertAfter<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> newNode<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>newNode<span class=\"k\">,</span> node<span class=\"k\">.</span>nextSibling<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21024;&#38500;&#33410;&#28857;node&#21450;&#20854;&#19979;&#23646;&#30340;&#25152;&#26377;&#33410;&#28857;</span>","<span class=\"c\">     * @method remove</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#21024;&#38500;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Node } &#36820;&#22238;&#21018;&#21024;&#38500;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;</span>","<span class=\"c\">     *     &lt;div id=\"child\"&gt;&#20320;&#22909;&lt;/div&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     UE.dom.domUtils.remove( document.body, false );</span>","<span class=\"c\">     *     //output: false</span>","<span class=\"c\">     *     console.log( document.getElementById( \"child\" ) !== null );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21024;&#38500;&#33410;&#28857;node&#65292;&#24182;&#26681;&#25454;keepChildren&#30340;&#20540;&#20915;&#23450;&#26159;&#21542;&#20445;&#30041;&#23376;&#33410;&#28857;</span>","<span class=\"c\">     * @method remove</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#21024;&#38500;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { Boolean } keepChildren &#26159;&#21542;&#38656;&#35201;&#20445;&#30041;&#23376;&#33410;&#28857;</span>","<span class=\"c\">     * @return { Node } &#36820;&#22238;&#21018;&#21024;&#38500;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;</span>","<span class=\"c\">     *     &lt;div id=\"child\"&gt;&#20320;&#22909;&lt;/div&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     UE.dom.domUtils.remove( document.body, true );</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( document.getElementById( \"child\" ) !== null );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    remove<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> keepChildren<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> parent <span class=\"k\">=</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">,</span>","            child<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>keepChildren <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>hasChildNodes<span class=\"k\">())</span> <span class=\"k\">{</span>","                <span class=\"k\">while</span> <span class=\"k\">(</span>child <span class=\"k\">=</span> node<span class=\"k\">.</span>firstChild<span class=\"k\">)</span> <span class=\"k\">{</span>","                    parent<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>child<span class=\"k\">,</span> node<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","            parent<span class=\"k\">.</span>removeChild<span class=\"k\">(</span>node<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> node<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/*</span>","<span class=\"c\">     * &#21462;&#24471;node&#33410;&#28857;&#22312;dom&#26641;&#19978;&#30340;&#19979;&#19968;&#20010;&#33410;&#28857;,&#21363;&#22810;&#21449;&#26641;&#36941;&#21382;</span>","<span class=\"c\">     */</span>","    getNextNode<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> startFromChild<span class=\"k\">,</span> filterFn<span class=\"k\">,</span> guard<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> getNode<span class=\"k\">(</span>node<span class=\"k\">,</span> <span class=\"s\">'firstChild'</span><span class=\"k\">,</span> <span class=\"s\">'nextSibling'</span><span class=\"k\">,</span> startFromChild<span class=\"k\">,</span> filterFn<span class=\"k\">,</span> guard<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26816;&#27979;&#33410;&#28857;node&#26159;&#21542;&#23646;&#26159;UEditor&#23450;&#20041;&#30340;bookmark&#33410;&#28857;</span>","<span class=\"c\">     * @method isBookmarkNode</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#26159;&#21542;&#26159;bookmark&#33410;&#28857;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"_baidu_bookmark_1\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *      var bookmarkNode = document.getElementById(\"_baidu_bookmark_1\");</span>","<span class=\"c\">     *      //output: true</span>","<span class=\"c\">     *      console.log( UE.dom.domUtils.isBookmarkNode( bookmarkNode ) );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isBookmarkNode<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>id <span class=\"k\">&amp;&amp;</span> <span class=\"s\">/^_baidu_bookmark_/i</span><span class=\"k\">.</span>test<span class=\"k\">(</span>node<span class=\"k\">.</span>id<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#33719;&#21462;&#33410;&#28857;node&#25152;&#23646;&#30340;window&#23545;&#35937;</span>","<span class=\"c\">     * @method  getWindow</span>","<span class=\"c\">     * @param { Node } node &#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Window } &#24403;&#21069;&#33410;&#28857;&#25152;&#23646;&#30340;window&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * //output: true</span>","<span class=\"c\">     * console.log( UE.dom.domUtils.getWindow( document.body ) === window );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    getWindow<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> doc <span class=\"k\">=</span> node<span class=\"k\">.</span>ownerDocument <span class=\"k\">||</span> node<span class=\"k\">;</span>","        <span class=\"k\">return</span> doc<span class=\"k\">.</span>defaultView <span class=\"k\">||</span> doc<span class=\"k\">.</span>parentWindow<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#33719;&#21462;&#31163;nodeA&#19982;nodeB&#26368;&#36817;&#30340;&#20844;&#20849;&#30340;&#31062;&#20808;&#33410;&#28857;</span>","<span class=\"c\">     * @method  getCommonAncestor</span>","<span class=\"c\">     * @param { Node } nodeA &#31532;&#19968;&#20010;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Node } nodeB &#31532;&#20108;&#20010;&#33410;&#28857;</span>","<span class=\"c\">     * @remind &#22914;&#26524;&#32473;&#23450;&#30340;&#20004;&#20010;&#33410;&#28857;&#26159;&#21516;&#19968;&#20010;&#33410;&#28857;&#65292; &#23558;&#30452;&#25509;&#36820;&#22238;&#35813;&#33410;&#28857;&#12290;</span>","<span class=\"c\">     * @return { Node | NULL } &#22914;&#26524;&#26410;&#25214;&#21040;&#20844;&#20849;&#33410;&#28857;&#65292; &#36820;&#22238;NULL&#65292; &#21542;&#21017;&#36820;&#22238;&#26368;&#36817;&#30340;&#20844;&#20849;&#31062;&#20808;&#33410;&#28857;&#12290;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild );</span>","<span class=\"c\">     * //output: true</span>","<span class=\"c\">     * console.log( commonAncestor.tagName.toLowerCase() === 'body' );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    getCommonAncestor<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>nodeA<span class=\"k\">,</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>nodeA <span class=\"k\">===</span> nodeB<span class=\"k\">)</span>","            <span class=\"k\">return</span> nodeA<span class=\"k\">;</span>","        <span class=\"k\">var</span> parentsA <span class=\"k\">=</span> <span class=\"k\">[</span>nodeA<span class=\"k\">]</span> <span class=\"k\">,</span> parentsB <span class=\"k\">=</span> <span class=\"k\">[</span>nodeB<span class=\"k\">],</span> parent <span class=\"k\">=</span> nodeA<span class=\"k\">,</span> i <span class=\"k\">=</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>parent <span class=\"k\">=</span> parent<span class=\"k\">.</span>parentNode<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>parent <span class=\"k\">===</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> parent<span class=\"k\">;</span>","            <span class=\"k\">}</span>","            parentsA<span class=\"k\">.</span>push<span class=\"k\">(</span>parent<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        parent <span class=\"k\">=</span> nodeB<span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>parent <span class=\"k\">=</span> parent<span class=\"k\">.</span>parentNode<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>parent <span class=\"k\">===</span> nodeA<span class=\"k\">)</span>","                <span class=\"k\">return</span> parent<span class=\"k\">;</span>","            parentsB<span class=\"k\">.</span>push<span class=\"k\">(</span>parent<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        parentsA<span class=\"k\">.</span>reverse<span class=\"k\">();</span>","        parentsB<span class=\"k\">.</span>reverse<span class=\"k\">();</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>i<span class=\"k\">++,</span> parentsA<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">===</span> parentsB<span class=\"k\">[</span>i<span class=\"k\">])</span> <span class=\"k\">{</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> i <span class=\"k\">==</span> <span class=\"s\">0</span> <span class=\"k\">?</span> <span class=\"k\">null</span> <span class=\"k\">:</span> parentsA<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=\"c\">/*</span>","<span class=\"c\">     * &#28165;&#38500;node&#33410;&#28857;&#24038;&#21491;&#20804;&#24351;&#20026;&#31354;&#30340;inline&#33410;&#28857;</span>","<span class=\"c\">     * @name clearEmptySibling</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.clearEmptySibling(node)</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext)  //ignoreNext&#25351;&#23450;&#26159;&#21542;&#24573;&#30053;&#21491;&#36793;&#31354;&#33410;&#28857;</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre)  //ignorePre&#25351;&#23450;&#26159;&#21542;&#24573;&#30053;&#24038;&#36793;&#31354;&#33410;&#28857;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * &lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;xxxx&lt;b&gt;bb&lt;/b&gt; --&gt; xxxx&lt;b&gt;bb&lt;/b&gt;</span>","<span class=\"c\">     */</span>","    clearEmptySibling<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> ignoreNext<span class=\"k\">,</span> ignorePre<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">function</span> clear<span class=\"k\">(</span>next<span class=\"k\">,</span> dir<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> tmpNode<span class=\"k\">;</span>","            <span class=\"k\">while</span> <span class=\"k\">(</span>next <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isBookmarkNode<span class=\"k\">(</span>next<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span>domUtils<span class=\"k\">.</span>isEmptyInlineElement<span class=\"k\">(</span>next<span class=\"k\">)</span>","                <span class=\"c\">//&#36825;&#37324;&#19981;&#33021;&#25226;&#31354;&#26684;&#31639;&#36827;&#26469;&#20250;&#21543;&#31354;&#26684;&#24178;&#25481;&#65292;&#20986;&#29616;&#25991;&#23383;&#38388;&#30340;&#31354;&#26684;&#20002;&#25481;&#20102;</span>","                <span class=\"k\">||</span> <span class=\"k\">!</span><span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'[^</span><span class=\"t\">\\t\\n\\r</span><span class=\"s\">'</span> <span class=\"k\">+</span> domUtils<span class=\"k\">.</span>fillChar <span class=\"k\">+</span> <span class=\"s\">']'</span><span class=\"k\">).</span>test<span class=\"k\">(</span>next<span class=\"k\">.</span>nodeValue<span class=\"k\">)</span> <span class=\"k\">))</span> <span class=\"k\">{</span>","                tmpNode <span class=\"k\">=</span> next<span class=\"k\">[</span>dir<span class=\"k\">];</span>","                domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>next<span class=\"k\">);</span>","                next <span class=\"k\">=</span> tmpNode<span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        <span class=\"k\">!</span>ignoreNext <span class=\"k\">&amp;&amp;</span> clear<span class=\"k\">(</span>node<span class=\"k\">.</span>nextSibling<span class=\"k\">,</span> <span class=\"s\">'nextSibling'</span><span class=\"k\">);</span>","        <span class=\"k\">!</span>ignorePre <span class=\"k\">&amp;&amp;</span> clear<span class=\"k\">(</span>node<span class=\"k\">.</span>previousSibling<span class=\"k\">,</span> <span class=\"s\">'previousSibling'</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#23558;&#19968;&#20010;&#25991;&#26412;&#33410;&#28857;textNode&#25286;&#20998;&#25104;&#20004;&#20010;&#25991;&#26412;&#33410;&#28857;&#65292;offset&#25351;&#23450;&#25286;&#20998;&#20301;&#32622;</span>","<span class=\"c\">     * @method split</span>","<span class=\"c\">     * @param { Node } textNode &#38656;&#35201;&#25286;&#20998;&#30340;&#25991;&#26412;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { int } offset &#38656;&#35201;&#25286;&#20998;&#30340;&#20301;&#32622;&#65292; &#20301;&#32622;&#35745;&#31639;&#20174;0&#24320;&#22987;</span>","<span class=\"c\">     * @return { Node } &#25286;&#20998;&#21518;&#24418;&#25104;&#30340;&#26032;&#33410;&#28857;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;abcdef&lt;/div&gt;</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *      var newNode = UE.dom.domUtils.split( document.getElementById( \"test\" ), 3 );</span>","<span class=\"c\">     *      //output: def</span>","<span class=\"c\">     *      console.log( newNode.nodeValue );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    split<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> offset<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> doc <span class=\"k\">=</span> node<span class=\"k\">.</span>ownerDocument<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>browser<span class=\"k\">.</span>ie <span class=\"k\">&amp;&amp;</span> offset <span class=\"k\">==</span> node<span class=\"k\">.</span>nodeValue<span class=\"k\">.</span>length<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> next <span class=\"k\">=</span> doc<span class=\"k\">.</span>createTextNode<span class=\"k\">(</span><span class=\"s\">''</span><span class=\"k\">);</span>","            <span class=\"k\">return</span> domUtils<span class=\"k\">.</span>insertAfter<span class=\"k\">(</span>node<span class=\"k\">,</span> next<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">var</span> retval <span class=\"k\">=</span> node<span class=\"k\">.</span>splitText<span class=\"k\">(</span>offset<span class=\"k\">);</span>","        <span class=\"c\">//ie8&#19979;splitText&#19981;&#20250;&#36319;&#26032;childNodes,&#25105;&#20204;&#25163;&#21160;&#35302;&#21457;&#20182;&#30340;&#26356;&#26032;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>browser<span class=\"k\">.</span>ie8<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> tmpNode <span class=\"k\">=</span> doc<span class=\"k\">.</span>createTextNode<span class=\"k\">(</span><span class=\"s\">''</span><span class=\"k\">);</span>","            domUtils<span class=\"k\">.</span>insertAfter<span class=\"k\">(</span>retval<span class=\"k\">,</span> tmpNode<span class=\"k\">);</span>","            domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>tmpNode<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> retval<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26816;&#27979;&#25991;&#26412;&#33410;&#28857;textNode&#26159;&#21542;&#20026;&#31354;&#33410;&#28857;&#65288;&#21253;&#25324;&#31354;&#26684;&#12289;&#25442;&#34892;&#12289;&#21344;&#20301;&#31526;&#31561;&#23383;&#31526;&#65289;</span>","<span class=\"c\">     * @method  isWhitespace</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#26816;&#27979;&#30340;&#33410;&#28857;&#26159;&#21542;&#20026;&#31354;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *      //output: true</span>","<span class=\"c\">     *      console.log( UE.dom.domUtils.isWhitespace( document.getElementById(\"test\").firstChild ) );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isWhitespace<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">!</span><span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'[^ </span><span class=\"t\">\\t\\n\\r</span><span class=\"s\">'</span> <span class=\"k\">+</span> domUtils<span class=\"k\">.</span>fillChar <span class=\"k\">+</span> <span class=\"s\">']'</span><span class=\"k\">).</span>test<span class=\"k\">(</span>node<span class=\"k\">.</span>nodeValue<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#33719;&#21462;&#20803;&#32032;element&#30456;&#23545;&#20110;viewport&#30340;&#20301;&#32622;&#22352;&#26631;</span>","<span class=\"c\">     * @method getXY</span>","<span class=\"c\">     * @param { Node } element &#38656;&#35201;&#35745;&#31639;&#20301;&#32622;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { KeyValueMap } &#36820;&#22238;&#24418;&#22914;{x:left,y:top}&#30340;&#19968;&#20010;key-value&#26144;&#23556;&#23545;&#35937;&#65292; &#20854;&#20013;&#38190;x&#20195;&#34920;&#27700;&#24179;&#20559;&#31227;&#36317;&#31163;&#65292;</span>","<span class=\"c\">     *                          y&#20195;&#34920;&#22402;&#30452;&#20559;&#31227;&#36317;&#31163;&#12290;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var location = UE.dom.domUtils.getXY( document.getElementById(\"test\") );</span>","<span class=\"c\">     * //output: test&#30340;&#22352;&#26631;&#20026;: 12, 24</span>","<span class=\"c\">     * console.log( 'test&#30340;&#22352;&#26631;&#20026;&#65306; ', location.x, ',', location.y );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    getXY<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> x <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span> y <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>element<span class=\"k\">.</span>offsetParent<span class=\"k\">)</span> <span class=\"k\">{</span>","            y <span class=\"k\">+=</span> element<span class=\"k\">.</span>offsetTop<span class=\"k\">;</span>","            x <span class=\"k\">+=</span> element<span class=\"k\">.</span>offsetLeft<span class=\"k\">;</span>","            element <span class=\"k\">=</span> element<span class=\"k\">.</span>offsetParent<span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> <span class=\"k\">{</span> <span class=\"s\">'x'</span><span class=\"k\">:</span>x<span class=\"k\">,</span> <span class=\"s\">'y'</span><span class=\"k\">:</span>y<span class=\"k\">}</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#20026;&#20803;&#32032;element&#32465;&#23450;&#21407;&#29983;DOM&#20107;&#20214;&#65292;type&#20026;&#20107;&#20214;&#31867;&#22411;&#65292;handler&#20026;&#22788;&#29702;&#20989;&#25968;</span>","<span class=\"c\">     * @method on</span>","<span class=\"c\">     * @param { Node } element &#38656;&#35201;&#32465;&#23450;&#20107;&#20214;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { String } type &#32465;&#23450;&#30340;&#20107;&#20214;&#31867;&#22411;</span>","<span class=\"c\">     * @param { Function } handler &#20107;&#20214;&#22788;&#29702;&#22120;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * UE.dom.domUtils.on(document.body,\"click\",function(e){</span>","<span class=\"c\">     *     //e&#20026;&#20107;&#20214;&#23545;&#35937;&#65292;this&#20026;&#34987;&#28857;&#20987;&#20803;&#32032;&#23545;&#25103;&#37027;&#20010;</span>","<span class=\"c\">     * });</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#20026;&#20803;&#32032;element&#32465;&#23450;&#21407;&#29983;DOM&#20107;&#20214;&#65292;type&#20026;&#20107;&#20214;&#31867;&#22411;&#65292;handler&#20026;&#22788;&#29702;&#20989;&#25968;</span>","<span class=\"c\">     * @method on</span>","<span class=\"c\">     * @param { Node } element &#38656;&#35201;&#32465;&#23450;&#20107;&#20214;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { Array } type &#32465;&#23450;&#30340;&#20107;&#20214;&#31867;&#22411;&#25968;&#32452;</span>","<span class=\"c\">     * @param { Function } handler &#20107;&#20214;&#22788;&#29702;&#22120;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * UE.dom.domUtils.on(document.body,[\"click\",\"mousedown\"],function(evt){</span>","<span class=\"c\">     *     //evt&#20026;&#20107;&#20214;&#23545;&#35937;&#65292;this&#20026;&#34987;&#28857;&#20987;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * });</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    on<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> type<span class=\"k\">,</span> handler<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> types <span class=\"k\">=</span> utils<span class=\"k\">.</span>isArray<span class=\"k\">(</span>type<span class=\"k\">)</span> <span class=\"k\">?</span> type <span class=\"k\">:</span> <span class=\"k\">[</span>type<span class=\"k\">],</span>","            k <span class=\"k\">=</span> types<span class=\"k\">.</span>length<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>k<span class=\"k\">)</span> <span class=\"k\">while</span> <span class=\"k\">(</span>k<span class=\"k\">--)</span> <span class=\"k\">{</span>","            type <span class=\"k\">=</span> types<span class=\"k\">[</span>k<span class=\"k\">];</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>element<span class=\"k\">.</span>addEventListener<span class=\"k\">)</span> <span class=\"k\">{</span>","                element<span class=\"k\">.</span>addEventListener<span class=\"k\">(</span>type<span class=\"k\">,</span> handler<span class=\"k\">,</span> <span class=\"k\">false</span><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>handler<span class=\"k\">.</span>_d<span class=\"k\">)</span> <span class=\"k\">{</span>","                    handler<span class=\"k\">.</span>_d <span class=\"k\">=</span> <span class=\"k\">{</span>","                        els <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> key <span class=\"k\">=</span> type <span class=\"k\">+</span> handler<span class=\"k\">.</span>toString<span class=\"k\">(),</span>index <span class=\"k\">=</span> utils<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>handler<span class=\"k\">.</span>_d<span class=\"k\">.</span>els<span class=\"k\">,</span>element<span class=\"k\">);</span>","                <span class=\"k\">if</span> <span class=\"k\">(!</span>handler<span class=\"k\">.</span>_d<span class=\"k\">[</span>key<span class=\"k\">]</span> <span class=\"k\">||</span> index <span class=\"k\">==</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span><span class=\"k\">(</span>index <span class=\"k\">==</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span><span class=\"k\">{</span>","                        handler<span class=\"k\">.</span>_d<span class=\"k\">.</span>els<span class=\"k\">.</span>push<span class=\"k\">(</span>element<span class=\"k\">);</span>","                    <span class=\"k\">}</span>","                    <span class=\"k\">if</span><span class=\"k\">(!</span>handler<span class=\"k\">.</span>_d<span class=\"k\">[</span>key<span class=\"k\">])</span><span class=\"k\">{</span>","                        handler<span class=\"k\">.</span>_d<span class=\"k\">[</span>key<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>evt<span class=\"k\">)</span> <span class=\"k\">{</span>","                            <span class=\"k\">return</span> handler<span class=\"k\">.</span>call<span class=\"k\">(</span>evt<span class=\"k\">.</span>srcElement<span class=\"k\">,</span> evt <span class=\"k\">||</span> window<span class=\"k\">.</span>event<span class=\"k\">);</span>","                        <span class=\"k\">}</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","","","                    element<span class=\"k\">.</span>attachEvent<span class=\"k\">(</span><span class=\"s\">'on'</span> <span class=\"k\">+</span> type<span class=\"k\">,</span> handler<span class=\"k\">.</span>_d<span class=\"k\">[</span>key<span class=\"k\">]);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        element <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\">     * &#35299;&#38500;DOM&#20107;&#20214;&#32465;&#23450;</span>","<span class=\"c\">     * @method un</span>","<span class=\"c\">     * @param { Node } element &#38656;&#35201;&#35299;&#38500;&#20107;&#20214;&#32465;&#23450;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { String } type &#38656;&#35201;&#25509;&#35302;&#32465;&#23450;&#30340;&#20107;&#20214;&#31867;&#22411;</span>","<span class=\"c\">     * @param { Function } handler &#23545;&#24212;&#30340;&#20107;&#20214;&#22788;&#29702;&#22120;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * UE.dom.domUtils.un(document.body,\"click\",function(evt){</span>","<span class=\"c\">     *     //evt&#20026;&#20107;&#20214;&#23545;&#35937;&#65292;this&#20026;&#34987;&#28857;&#20987;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * });</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#35299;&#38500;DOM&#20107;&#20214;&#32465;&#23450;</span>","<span class=\"c\">     * @method un</span>","<span class=\"c\">     * @param { Node } element &#38656;&#35201;&#35299;&#38500;&#20107;&#20214;&#32465;&#23450;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { Array } type &#38656;&#35201;&#25509;&#35302;&#32465;&#23450;&#30340;&#20107;&#20214;&#31867;&#22411;&#25968;&#32452;</span>","<span class=\"c\">     * @param { Function } handler &#23545;&#24212;&#30340;&#20107;&#20214;&#22788;&#29702;&#22120;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * UE.dom.domUtils.un(document.body, [\"click\",\"mousedown\"],function(evt){</span>","<span class=\"c\">     *     //evt&#20026;&#20107;&#20214;&#23545;&#35937;&#65292;this&#20026;&#34987;&#28857;&#20987;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * });</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    un<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> type<span class=\"k\">,</span> handler<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> types <span class=\"k\">=</span> utils<span class=\"k\">.</span>isArray<span class=\"k\">(</span>type<span class=\"k\">)</span> <span class=\"k\">?</span> type <span class=\"k\">:</span> <span class=\"k\">[</span>type<span class=\"k\">],</span>","            k <span class=\"k\">=</span> types<span class=\"k\">.</span>length<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>k<span class=\"k\">)</span> <span class=\"k\">while</span> <span class=\"k\">(</span>k<span class=\"k\">--)</span> <span class=\"k\">{</span>","            type <span class=\"k\">=</span> types<span class=\"k\">[</span>k<span class=\"k\">];</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>element<span class=\"k\">.</span>removeEventListener<span class=\"k\">)</span> <span class=\"k\">{</span>","                element<span class=\"k\">.</span>removeEventListener<span class=\"k\">(</span>type<span class=\"k\">,</span> handler<span class=\"k\">,</span> <span class=\"k\">false</span><span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> key <span class=\"k\">=</span> type <span class=\"k\">+</span> handler<span class=\"k\">.</span>toString<span class=\"k\">();</span>","                <span class=\"k\">try</span><span class=\"k\">{</span>","                    element<span class=\"k\">.</span>detachEvent<span class=\"k\">(</span><span class=\"s\">'on'</span> <span class=\"k\">+</span> type<span class=\"k\">,</span> handler<span class=\"k\">.</span>_d <span class=\"k\">?</span> handler<span class=\"k\">.</span>_d<span class=\"k\">[</span>key<span class=\"k\">]</span> <span class=\"k\">:</span> handler<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\">if</span> <span class=\"k\">(</span>handler<span class=\"k\">.</span>_d <span class=\"k\">&amp;&amp;</span> handler<span class=\"k\">.</span>_d<span class=\"k\">[</span>key<span class=\"k\">])</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> index <span class=\"k\">=</span> utils<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>handler<span class=\"k\">.</span>_d<span class=\"k\">.</span>els<span class=\"k\">,</span>element<span class=\"k\">);</span>","                    <span class=\"k\">if</span><span class=\"k\">(</span>index<span class=\"k\">!=-</span><span class=\"s\">1</span><span class=\"k\">)</span><span class=\"k\">{</span>","                        handler<span class=\"k\">.</span>_d<span class=\"k\">.</span>els<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>","                    handler<span class=\"k\">.</span>_d<span class=\"k\">.</span>els<span class=\"k\">.</span>length <span class=\"k\">==</span> <span class=\"s\">0</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">delete</span> handler<span class=\"k\">.</span>_d<span class=\"k\">[</span>key<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\">     * &#27604;&#36739;&#33410;&#28857;nodeA&#19982;&#33410;&#28857;nodeB&#26159;&#21542;&#20855;&#26377;&#30456;&#21516;&#30340;&#26631;&#31614;&#21517;&#12289;&#23646;&#24615;&#21517;&#20197;&#21450;&#23646;&#24615;&#20540;</span>","<span class=\"c\">     * @method  isSameElement</span>","<span class=\"c\">     * @param { Node } nodeA &#38656;&#35201;&#27604;&#36739;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Node } nodeB &#38656;&#35201;&#27604;&#36739;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @return { Boolean } &#20004;&#20010;&#33410;&#28857;&#26159;&#21542;&#20855;&#26377;&#30456;&#21516;&#30340;&#26631;&#31614;&#21517;&#12289;&#23646;&#24615;&#21517;&#20197;&#21450;&#23646;&#24615;&#20540;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span style=\"font-size:12px\"&gt;ssss&lt;/span&gt;</span>","<span class=\"c\">     * &lt;span style=\"font-size:12px\"&gt;bbbbb&lt;/span&gt;</span>","<span class=\"c\">     * &lt;span style=\"font-size:13px\"&gt;ssss&lt;/span&gt;</span>","<span class=\"c\">     * &lt;span style=\"font-size:14px\"&gt;bbbbb&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var nodes = document.getElementsByTagName( \"span\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isSameElement( nodes[0], nodes[1] ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: false</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isSameElement( nodes[2], nodes[3] ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isSameElement<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>nodeA<span class=\"k\">,</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>nodeA<span class=\"k\">.</span>tagName <span class=\"k\">!=</span> nodeB<span class=\"k\">.</span>tagName<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> thisAttrs <span class=\"k\">=</span> nodeA<span class=\"k\">.</span>attributes<span class=\"k\">,</span>","            otherAttrs <span class=\"k\">=</span> nodeB<span class=\"k\">.</span>attributes<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>ie <span class=\"k\">&amp;&amp;</span> thisAttrs<span class=\"k\">.</span>length <span class=\"k\">!=</span> otherAttrs<span class=\"k\">.</span>length<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> attrA<span class=\"k\">,</span> attrB<span class=\"k\">,</span> al <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span> bl <span class=\"k\">=</span> <span class=\"s\">0</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> attrA <span class=\"k\">=</span> thisAttrs<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>attrA<span class=\"k\">.</span>nodeName <span class=\"k\">==</span> <span class=\"s\">'style'</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>attrA<span class=\"k\">.</span>specified<span class=\"k\">)</span> <span class=\"k\">{</span>","                    al<span class=\"k\">++;</span>","                <span class=\"k\">}</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>domUtils<span class=\"k\">.</span>isSameStyle<span class=\"k\">(</span>nodeA<span class=\"k\">,</span> nodeB<span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">continue</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\">false</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>ie<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>attrA<span class=\"k\">.</span>specified<span class=\"k\">)</span> <span class=\"k\">{</span>","                    al<span class=\"k\">++;</span>","                    attrB <span class=\"k\">=</span> otherAttrs<span class=\"k\">.</span>getNamedItem<span class=\"k\">(</span>attrA<span class=\"k\">.</span>nodeName<span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">continue</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                attrB <span class=\"k\">=</span> nodeB<span class=\"k\">.</span>attributes<span class=\"k\">[</span>attrA<span class=\"k\">.</span>nodeName<span class=\"k\">];</span>","            <span class=\"k\">}</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span>attrB<span class=\"k\">.</span>specified <span class=\"k\">||</span> attrA<span class=\"k\">.</span>nodeValue <span class=\"k\">!=</span> attrB<span class=\"k\">.</span>nodeValue<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\">// &#26377;&#21487;&#33021;attrB&#30340;&#23646;&#24615;&#21253;&#21547;&#20102;attrA&#30340;&#23646;&#24615;&#20043;&#22806;&#36824;&#26377;&#33258;&#24049;&#30340;&#23646;&#24615;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>ie<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> attrB <span class=\"k\">=</span> otherAttrs<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>attrB<span class=\"k\">.</span>specified<span class=\"k\">)</span> <span class=\"k\">{</span>","                    bl<span class=\"k\">++;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>al <span class=\"k\">!=</span> bl<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\">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\">     * &#21028;&#26029;&#33410;&#28857;nodeA&#19982;&#33410;&#28857;nodeB&#30340;&#20803;&#32032;&#30340;style&#23646;&#24615;&#26159;&#21542;&#19968;&#33268;</span>","<span class=\"c\">     * @method isSameStyle</span>","<span class=\"c\">     * @param { Node } nodeA &#38656;&#35201;&#27604;&#36739;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Node } nodeB &#38656;&#35201;&#27604;&#36739;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @return { Boolean } &#20004;&#20010;&#33410;&#28857;&#26159;&#21542;&#20855;&#26377;&#30456;&#21516;&#30340;style&#23646;&#24615;&#20540;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span style=\"font-size:12px\"&gt;ssss&lt;/span&gt;</span>","<span class=\"c\">     * &lt;span style=\"font-size:12px\"&gt;bbbbb&lt;/span&gt;</span>","<span class=\"c\">     * &lt;span style=\"font-size:13px\"&gt;ssss&lt;/span&gt;</span>","<span class=\"c\">     * &lt;span style=\"font-size:14px\"&gt;bbbbb&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var nodes = document.getElementsByTagName( \"span\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isSameElement( nodes[0], nodes[1] ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: false</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isSameElement( nodes[2], nodes[3] ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isSameStyle<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>nodeA<span class=\"k\">,</span> nodeB<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> styleA <span class=\"k\">=</span> nodeA<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"s\">/( ?; ?)/g</span><span class=\"k\">,</span> <span class=\"s\">';'</span><span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/( ?: ?)/g</span><span class=\"k\">,</span> <span class=\"s\">':'</span><span class=\"k\">),</span>","            styleB <span class=\"k\">=</span> nodeB<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"s\">/( ?; ?)/g</span><span class=\"k\">,</span> <span class=\"s\">';'</span><span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/( ?: ?)/g</span><span class=\"k\">,</span> <span class=\"s\">':'</span><span class=\"k\">);</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>browser<span class=\"k\">.</span>opera<span class=\"k\">)</span> <span class=\"k\">{</span>","            styleA <span class=\"k\">=</span> nodeA<span class=\"k\">.</span>style<span class=\"k\">;</span>","            styleB <span class=\"k\">=</span> nodeB<span class=\"k\">.</span>style<span class=\"k\">;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>styleA<span class=\"k\">.</span>length <span class=\"k\">!=</span> styleB<span class=\"k\">.</span>length<span class=\"k\">)</span>","                <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> p <span class=\"k\">in</span> styleA<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">/^(\\d+|csstext)$/i</span><span class=\"k\">.</span>test<span class=\"k\">(</span>p<span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">continue</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>styleA<span class=\"k\">[</span>p<span class=\"k\">]</span> <span class=\"k\">!=</span> styleB<span class=\"k\">[</span>p<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\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>styleA <span class=\"k\">||</span> <span class=\"k\">!</span>styleB<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> styleA <span class=\"k\">==</span> styleB<span class=\"k\">;</span>","        <span class=\"k\">}</span>","        styleA <span class=\"k\">=</span> styleA<span class=\"k\">.</span>split<span class=\"k\">(</span><span class=\"s\">';'</span><span class=\"k\">);</span>","        styleB <span class=\"k\">=</span> styleB<span class=\"k\">.</span>split<span class=\"k\">(</span><span class=\"s\">';'</span><span class=\"k\">);</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>styleA<span class=\"k\">.</span>length <span class=\"k\">!=</span> styleB<span class=\"k\">.</span>length<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\">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> ci<span class=\"k\">;</span> ci <span class=\"k\">=</span> styleA<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>utils<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>styleB<span class=\"k\">,</span> ci<span class=\"k\">)</span> <span class=\"k\">==</span> <span class=\"k\">-</span><span class=\"s\">1</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\">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\">     * &#26816;&#26597;&#33410;&#28857;node&#26159;&#21542;&#20026;block&#20803;&#32032;</span>","<span class=\"c\">     * @method isBlockElm</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#26159;&#21542;&#26159;block&#20803;&#32032;&#33410;&#28857;</span>","<span class=\"c\">     * @warning &#35813;&#26041;&#27861;&#30340;&#21028;&#26029;&#35268;&#21017;&#22914;&#19979;&#65306; &#22914;&#26524;&#35813;&#20803;&#32032;&#21407;&#26412;&#26159;block&#20803;&#32032;&#65292; &#21017;&#19981;&#35770;&#35813;&#20803;&#32032;&#24403;&#21069;&#30340;css&#26679;&#24335;&#26159;&#20160;&#20040;&#37117;&#20250;&#36820;&#22238;true&#65307;</span>","<span class=\"c\">     *          &#21542;&#21017;&#65292;&#26816;&#27979;&#35813;&#20803;&#32032;&#30340;css&#26679;&#24335;&#65292; &#22914;&#26524;&#35813;&#20803;&#32032;&#24403;&#21069;&#26159;block&#20803;&#32032;&#65292; &#21017;&#36820;&#22238;true&#12290; &#20854;&#20313;&#24773;&#20917;&#19979;&#37117;&#36820;&#22238;false&#12290;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test1\" style=\"display: block\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     * &lt;span id=\"test2\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     * &lt;div id=\"test3\" style=\"display: inline\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isBlockEle( document.getElementById(\"test1\") ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: false</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isBlockEle( document.getElementById(\"test2\") ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isBlockEle( document.getElementById(\"test3\") ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isBlockElm<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span>dtd<span class=\"k\">.</span>$block<span class=\"k\">[</span>node<span class=\"k\">.</span>tagName<span class=\"k\">]</span> <span class=\"k\">||</span> styleBlock<span class=\"k\">[</span>domUtils<span class=\"k\">.</span>getComputedStyle<span class=\"k\">(</span>node<span class=\"k\">,</span> <span class=\"s\">'display'</span><span class=\"k\">)])</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>dtd<span class=\"k\">.</span>$nonChild<span class=\"k\">[</span>node<span class=\"k\">.</span>tagName<span class=\"k\">];</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26816;&#27979;node&#33410;&#28857;&#26159;&#21542;&#20026;body&#33410;&#28857;</span>","<span class=\"c\">     * @method isBody</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#26816;&#27979;&#30340;dom&#20803;&#32032;</span>","<span class=\"c\">     * @return { Boolean } &#32473;&#23450;&#30340;&#20803;&#32032;&#26159;&#21542;&#26159;body&#20803;&#32032;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * //output: true</span>","<span class=\"c\">     * console.log( UE.dom.domUtils.isBody( document.body ) );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isBody<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span>  node <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>tagName<span class=\"k\">.</span>toLowerCase<span class=\"k\">()</span> <span class=\"k\">==</span> <span class=\"s\">'body'</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/*</span>","<span class=\"c\">     * &#20197;node&#33410;&#28857;&#20026;&#20013;&#24515;&#65292;&#23558;&#35813;&#33410;&#28857;&#30340;&#25351;&#23450;&#31062;&#20808;&#33410;&#28857;parent&#25286;&#20998;&#25104;2&#22359;</span>","<span class=\"c\">     * @name  breakParent</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.breakParent(node,parent) =&gt; node</span>","<span class=\"c\">     * @desc</span>","<span class=\"c\">     * &lt;code type=\"html\"&gt;&lt;b&gt;ooo&lt;/b&gt;&#26159;node&#33410;&#28857;</span>","<span class=\"c\">     * &lt;p&gt;xxxx&lt;b&gt;ooo&lt;/b&gt;xxx&lt;/p&gt; ==&gt; &lt;p&gt;xxx&lt;/p&gt;&lt;b&gt;ooo&lt;/b&gt;&lt;p&gt;xxx&lt;/p&gt;</span>","<span class=\"c\">     * &lt;p&gt;xxxxx&lt;span&gt;xxxx&lt;b&gt;ooo&lt;/b&gt;xxxxxx&lt;/span&gt;&lt;/p&gt;   =&gt;   &lt;p&gt;xxxxx&lt;span&gt;xxxx&lt;/span&gt;&lt;/p&gt;&lt;b&gt;ooo&lt;/b&gt;&lt;p&gt;&lt;span&gt;xxxxxx&lt;/span&gt;&lt;/p&gt;&lt;/code&gt;</span>","<span class=\"c\">     */</span>","    breakParent<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> parent<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> tmpNode<span class=\"k\">,</span>","            parentClone <span class=\"k\">=</span> node<span class=\"k\">,</span>","            clone <span class=\"k\">=</span> node<span class=\"k\">,</span>","            leftNodes<span class=\"k\">,</span>","            rightNodes<span class=\"k\">;</span>","        <span class=\"k\">do</span> <span class=\"k\">{</span>","            parentClone <span class=\"k\">=</span> parentClone<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>leftNodes<span class=\"k\">)</span> <span class=\"k\">{</span>","                tmpNode <span class=\"k\">=</span> parentClone<span class=\"k\">.</span>cloneNode<span class=\"k\">(</span><span class=\"k\">false</span><span class=\"k\">);</span>","                tmpNode<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>leftNodes<span class=\"k\">);</span>","                leftNodes <span class=\"k\">=</span> tmpNode<span class=\"k\">;</span>","                tmpNode <span class=\"k\">=</span> parentClone<span class=\"k\">.</span>cloneNode<span class=\"k\">(</span><span class=\"k\">false</span><span class=\"k\">);</span>","                tmpNode<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>rightNodes<span class=\"k\">);</span>","                rightNodes <span class=\"k\">=</span> tmpNode<span class=\"k\">;</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                leftNodes <span class=\"k\">=</span> parentClone<span class=\"k\">.</span>cloneNode<span class=\"k\">(</span><span class=\"k\">false</span><span class=\"k\">);</span>","                rightNodes <span class=\"k\">=</span> leftNodes<span class=\"k\">.</span>cloneNode<span class=\"k\">(</span><span class=\"k\">false</span><span class=\"k\">);</span>","            <span class=\"k\">}</span>","            <span class=\"k\">while</span> <span class=\"k\">(</span>tmpNode <span class=\"k\">=</span> clone<span class=\"k\">.</span>previousSibling<span class=\"k\">)</span> <span class=\"k\">{</span>","                leftNodes<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>tmpNode<span class=\"k\">,</span> leftNodes<span class=\"k\">.</span>firstChild<span class=\"k\">);</span>","            <span class=\"k\">}</span>","            <span class=\"k\">while</span> <span class=\"k\">(</span>tmpNode <span class=\"k\">=</span> clone<span class=\"k\">.</span>nextSibling<span class=\"k\">)</span> <span class=\"k\">{</span>","                rightNodes<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>tmpNode<span class=\"k\">);</span>","            <span class=\"k\">}</span>","            clone <span class=\"k\">=</span> parentClone<span class=\"k\">;</span>","        <span class=\"k\">}</span> <span class=\"k\">while</span> <span class=\"k\">(</span>parent <span class=\"k\">!==</span> parentClone<span class=\"k\">);</span>","        tmpNode <span class=\"k\">=</span> parent<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","        tmpNode<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>leftNodes<span class=\"k\">,</span> parent<span class=\"k\">);</span>","        tmpNode<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>rightNodes<span class=\"k\">,</span> parent<span class=\"k\">);</span>","        tmpNode<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>node<span class=\"k\">,</span> rightNodes<span class=\"k\">);</span>","        domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>parent<span class=\"k\">);</span>","        <span class=\"k\">return</span> node<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/*</span>","<span class=\"c\">     * &#26816;&#26597;&#33410;&#28857;node&#26159;&#21542;&#26159;&#31354;inline&#33410;&#28857;</span>","<span class=\"c\">     * @name  isEmptyInlineElement</span>","<span class=\"c\">     * @grammar   UE.dom.domUtils.isEmptyInlineElement(node)  =&gt; 1|0</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * &lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt; =&gt; 1</span>","<span class=\"c\">     * &lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt; =&gt; 1</span>","<span class=\"c\">     * &lt;b&gt;&lt;/b&gt; =&gt; 1</span>","<span class=\"c\">     * &lt;b&gt;xx&lt;i&gt;&lt;/i&gt;&lt;/b&gt; =&gt; 0</span>","<span class=\"c\">     */</span>","    isEmptyInlineElement<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>node<span class=\"k\">.</span>nodeType <span class=\"k\">!=</span> <span class=\"s\">1</span> <span class=\"k\">||</span> <span class=\"k\">!</span>dtd<span class=\"k\">.</span>$removeEmpty<span class=\"k\">[</span> node<span class=\"k\">.</span>tagName <span class=\"k\">])</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        node <span class=\"k\">=</span> node<span class=\"k\">.</span>firstChild<span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"c\">//&#22914;&#26524;&#26159;&#21019;&#24314;&#30340;bookmark&#23601;&#36339;&#36807;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>domUtils<span class=\"k\">.</span>isBookmarkNode<span class=\"k\">(</span>node<span class=\"k\">))</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isEmptyInlineElement<span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">||</span>","                node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">3</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isWhitespace<span class=\"k\">(</span>node<span class=\"k\">)</span>","                <span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            node <span class=\"k\">=</span> node<span class=\"k\">.</span>nextSibling<span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</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\">     * &#21024;&#38500;node&#33410;&#28857;&#19979;&#39318;&#23614;&#20004;&#31471;&#30340;&#31354;&#30333;&#25991;&#26412;&#23376;&#33410;&#28857;</span>","<span class=\"c\">     * @method trimWhiteTextNode</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#25191;&#34892;&#21024;&#38500;&#25805;&#20316;&#30340;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;</span>","<span class=\"c\">     *     &lt;div&gt;&lt;/div&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var testNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *     //output: 3</span>","<span class=\"c\">     *     console.log(testNode.childNodes.length);</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.trimWhiteTextNode( testNode );</span>","<span class=\"c\">     *     //output: 1</span>","<span class=\"c\">     *     console.log(testNode.childNodes.length);</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    trimWhiteTextNode<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">function</span> remove<span class=\"k\">(</span>dir<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> child<span class=\"k\">;</span>","            <span class=\"k\">while</span> <span class=\"k\">((</span>child <span class=\"k\">=</span> node<span class=\"k\">[</span>dir<span class=\"k\">])</span> <span class=\"k\">&amp;&amp;</span> child<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">3</span> <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>isWhitespace<span class=\"k\">(</span>child<span class=\"k\">))</span> <span class=\"k\">{</span>","                node<span class=\"k\">.</span>removeChild<span class=\"k\">(</span>child<span class=\"k\">);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        remove<span class=\"k\">(</span><span class=\"s\">'firstChild'</span><span class=\"k\">);</span>","        remove<span class=\"k\">(</span><span class=\"s\">'lastChild'</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/*</span>","<span class=\"c\">     * &#21512;&#24182;node&#33410;&#28857;&#19979;&#30456;&#21516;&#30340;&#23376;&#33410;&#28857;</span>","<span class=\"c\">     * @method mergeChild</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * &lt;p&gt;&lt;span style=\"font-size:12px;\"&gt;xx&lt;span style=\"font-size:12px;\"&gt;aa&lt;/span&gt;xx&lt;/span&gt;&lt;/p&gt;</span>","<span class=\"c\">     * ==&gt; UE.dom.domUtils.mergeChild(node,'span')</span>","<span class=\"c\">     * &lt;p&gt;&lt;span style=\"font-size:12px;\"&gt;xxaaxx&lt;/span&gt;&lt;/p&gt;</span>","<span class=\"c\">     */</span>","    mergeChild<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> tagName<span class=\"k\">,</span> attrs<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> list <span class=\"k\">=</span> domUtils<span class=\"k\">.</span>getElementsByTagName<span class=\"k\">(</span>node<span class=\"k\">,</span> node<span class=\"k\">.</span>tagName<span class=\"k\">.</span>toLowerCase<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> ci<span class=\"k\">;</span> ci <span class=\"k\">=</span> list<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span>ci<span class=\"k\">.</span>parentNode <span class=\"k\">||</span> domUtils<span class=\"k\">.</span>isBookmarkNode<span class=\"k\">(</span>ci<span class=\"k\">))</span> <span class=\"k\">{</span>","                <span class=\"k\">continue</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            <span class=\"c\">//span&#21333;&#29420;&#22788;&#29702;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>ci<span class=\"k\">.</span>tagName<span class=\"k\">.</span>toLowerCase<span class=\"k\">()</span> <span class=\"k\">==</span> <span class=\"s\">'span'</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>node <span class=\"k\">===</span> ci<span class=\"k\">.</span>parentNode<span class=\"k\">)</span> <span class=\"k\">{</span>","                    domUtils<span class=\"k\">.</span>trimWhiteTextNode<span class=\"k\">(</span>node<span class=\"k\">);</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>node<span class=\"k\">.</span>childNodes<span class=\"k\">.</span>length <span class=\"k\">==</span> <span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">=</span> ci<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">+</span> <span class=\"s\">\";\"</span> <span class=\"k\">+</span> node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">;</span>","                        domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>ci<span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","                        <span class=\"k\">continue</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","                ci<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">=</span> node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">+</span> <span class=\"s\">';'</span> <span class=\"k\">+</span> ci<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">;</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>attrs<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">var</span> style <span class=\"k\">=</span> attrs<span class=\"k\">.</span>style<span class=\"k\">;</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>style<span class=\"k\">)</span> <span class=\"k\">{</span>","                        style <span class=\"k\">=</span> style<span class=\"k\">.</span>split<span class=\"k\">(</span><span class=\"s\">';'</span><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> s<span class=\"k\">;</span> s <span class=\"k\">=</span> style<span class=\"k\">[</span>j<span class=\"k\">++];)</span> <span class=\"k\">{</span>","                            ci<span class=\"k\">.</span>style<span class=\"k\">[</span>utils<span class=\"k\">.</span>cssStyleToDomStyle<span class=\"k\">(</span>s<span class=\"k\">.</span>split<span class=\"k\">(</span><span class=\"s\">':'</span><span class=\"k\">)[</span><span class=\"s\">0</span><span class=\"k\">])]</span> <span class=\"k\">=</span> s<span class=\"k\">.</span>split<span class=\"k\">(</span><span class=\"s\">':'</span><span class=\"k\">)[</span><span class=\"s\">1</span><span class=\"k\">];</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>domUtils<span class=\"k\">.</span>isSameStyle<span class=\"k\">(</span>ci<span class=\"k\">,</span> node<span class=\"k\">))</span> <span class=\"k\">{</span>","                    domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>ci<span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","                <span class=\"k\">}</span>","                <span class=\"k\">continue</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>domUtils<span class=\"k\">.</span>isSameElement<span class=\"k\">(</span>node<span class=\"k\">,</span> ci<span class=\"k\">))</span> <span class=\"k\">{</span>","                domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>ci<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=\"k\">,</span>","","    <span class=\"c\">/*</span>","<span class=\"c\">     * &#21407;&#29983;&#26041;&#27861;getElementsByTagName&#30340;&#23553;&#35013;</span>","<span class=\"c\">     * @name getElementsByTagName</span>","<span class=\"c\">     * @grammar UE.dom.domUtils.getElementsByTagName(node,tagName)  =&gt; Array  //&#33410;&#28857;&#38598;&#21512;&#25968;&#32452;</span>","<span class=\"c\">     */</span>","    getElementsByTagName<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> name<span class=\"k\">,</span>filter<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>filter <span class=\"k\">&amp;&amp;</span> utils<span class=\"k\">.</span>isString<span class=\"k\">(</span>filter<span class=\"k\">))</span><span class=\"k\">{</span>","           <span class=\"k\">var</span> className <span class=\"k\">=</span> filter<span class=\"k\">;</span>","           filter <span class=\"k\">=</span>  <span class=\"k\">function</span><span class=\"k\">(</span>node<span class=\"k\">)</span><span class=\"k\">{</span><span class=\"k\">return</span> domUtils<span class=\"k\">.</span>hasClass<span class=\"k\">(</span>node<span class=\"k\">,</span>className<span class=\"k\">)</span><span class=\"k\">}</span>","        <span class=\"k\">}</span>","        name <span class=\"k\">=</span> utils<span class=\"k\">.</span>trim<span class=\"k\">(</span>name<span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/[ ]{2,}/g</span><span class=\"k\">,</span><span class=\"s\">' '</span><span class=\"k\">).</span>split<span class=\"k\">(</span><span class=\"s\">' '</span><span class=\"k\">);</span>","        <span class=\"k\">var</span> arr <span class=\"k\">=</span> <span class=\"k\">[];</span>","        <span class=\"k\">for</span><span class=\"k\">(</span><span class=\"k\">var</span> n <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span>ni<span class=\"k\">;</span>ni<span class=\"k\">=</span>name<span class=\"k\">[</span>n<span class=\"k\">++];)</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> list <span class=\"k\">=</span> node<span class=\"k\">.</span>getElementsByTagName<span class=\"k\">(</span>ni<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> ci<span class=\"k\">;</span> ci <span class=\"k\">=</span> list<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span><span class=\"k\">(!</span>filter <span class=\"k\">||</span> filter<span class=\"k\">(</span>ci<span class=\"k\">))</span>","                    arr<span class=\"k\">.</span>push<span class=\"k\">(</span>ci<span class=\"k\">);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> arr<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#23558;&#33410;&#28857;node&#25552;&#21462;&#21040;&#29238;&#33410;&#28857;&#19978;</span>","<span class=\"c\">     * @method mergeToParent</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#25552;&#21462;&#30340;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"parent\"&gt;</span>","<span class=\"c\">     *     &lt;div id=\"sub\"&gt;</span>","<span class=\"c\">     *         &lt;span id=\"child\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *     &lt;/div&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var child = document.getElementById( \"child\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: sub</span>","<span class=\"c\">     *     console.log( child.parentNode.id );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.mergeToParent( child );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: parent</span>","<span class=\"c\">     *     console.log( child.parentNode.id );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    mergeToParent<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> parent <span class=\"k\">=</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>parent <span class=\"k\">&amp;&amp;</span> dtd<span class=\"k\">.</span>$removeEmpty<span class=\"k\">[</span>parent<span class=\"k\">.</span>tagName<span class=\"k\">])</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>tagName <span class=\"k\">==</span> node<span class=\"k\">.</span>tagName <span class=\"k\">||</span> parent<span class=\"k\">.</span>tagName <span class=\"k\">==</span> <span class=\"s\">'A'</span><span class=\"k\">)</span> <span class=\"k\">{</span><span class=\"c\">//&#38024;&#23545;a&#26631;&#31614;&#21333;&#29420;&#22788;&#29702;</span>","                domUtils<span class=\"k\">.</span>trimWhiteTextNode<span class=\"k\">(</span>parent<span class=\"k\">);</span>","                <span class=\"c\">//span&#38656;&#35201;&#29305;&#27530;&#22788;&#29702;  &#19981;&#22788;&#29702;&#36825;&#26679;&#30340;&#24773;&#20917; &lt;span stlye=\"color:#fff\"&gt;xxx&lt;span style=\"color:#ccc\"&gt;xxx&lt;/span&gt;xxx&lt;/span&gt;</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>tagName <span class=\"k\">==</span> <span class=\"s\">'SPAN'</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isSameStyle<span class=\"k\">(</span>parent<span class=\"k\">,</span> node<span class=\"k\">)</span>","                    <span class=\"k\">||</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>tagName <span class=\"k\">==</span> <span class=\"s\">'A'</span> <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>tagName <span class=\"k\">==</span> <span class=\"s\">'SPAN'</span><span class=\"k\">))</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>childNodes<span class=\"k\">.</span>length <span class=\"k\">&gt;</span> <span class=\"s\">1</span> <span class=\"k\">||</span> parent <span class=\"k\">!==</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">)</span> <span class=\"k\">{</span>","                        node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">=</span> parent<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">+</span> <span class=\"s\">\";\"</span> <span class=\"k\">+</span> node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">;</span>","                        parent <span class=\"k\">=</span> parent<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","                        <span class=\"k\">continue</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        parent<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">+=</span> <span class=\"s\">\";\"</span> <span class=\"k\">+</span> node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">;</span>","                        <span class=\"c\">//trace:952 a&#26631;&#31614;&#35201;&#20445;&#25345;&#19979;&#21010;&#32447;</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>tagName <span class=\"k\">==</span> <span class=\"s\">'A'</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                            parent<span class=\"k\">.</span>style<span class=\"k\">.</span>textDecoration <span class=\"k\">=</span> <span class=\"s\">'underline'</span><span class=\"k\">;</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>tagName <span class=\"k\">!=</span> <span class=\"s\">'A'</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                    parent <span class=\"k\">===</span> node<span class=\"k\">.</span>parentNode <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>node<span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","                    <span class=\"k\">break</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","            parent <span class=\"k\">=</span> parent<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21512;&#24182;&#33410;&#28857;node&#30340;&#24038;&#21491;&#20804;&#24351;&#33410;&#28857;</span>","<span class=\"c\">     * @method mergeSibling</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#21512;&#24182;&#30340;&#30446;&#26631;&#33410;&#28857;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;b&gt;xxxx&lt;/b&gt;&lt;b id=\"test\"&gt;ooo&lt;/b&gt;&lt;b&gt;xxxx&lt;/b&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var demoNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *     UE.dom.domUtils.mergeSibling( demoNode );</span>","<span class=\"c\">     *     //output: xxxxoooxxxx</span>","<span class=\"c\">     *     console.log( demoNode.innerHTML );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21512;&#24182;&#33410;&#28857;node&#30340;&#24038;&#21491;&#20804;&#24351;&#33410;&#28857;&#65292; &#21487;&#20197;&#26681;&#25454;&#32473;&#23450;&#30340;&#26465;&#20214;&#36873;&#25321;&#26159;&#21542;&#24573;&#30053;&#21512;&#24182;&#24038;&#33410;&#28857;&#12290;</span>","<span class=\"c\">     * @method mergeSibling</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#21512;&#24182;&#30340;&#30446;&#26631;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Boolean } ignorePre &#26159;&#21542;&#24573;&#30053;&#21512;&#24182;&#24038;&#33410;&#28857;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;b&gt;xxxx&lt;/b&gt;&lt;b id=\"test\"&gt;ooo&lt;/b&gt;&lt;b&gt;xxxx&lt;/b&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var demoNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *     UE.dom.domUtils.mergeSibling( demoNode, true );</span>","<span class=\"c\">     *     //output: oooxxxx</span>","<span class=\"c\">     *     console.log( demoNode.innerHTML );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21512;&#24182;&#33410;&#28857;node&#30340;&#24038;&#21491;&#20804;&#24351;&#33410;&#28857;&#65292;&#21487;&#20197;&#26681;&#25454;&#32473;&#23450;&#30340;&#26465;&#20214;&#36873;&#25321;&#26159;&#21542;&#24573;&#30053;&#21512;&#24182;&#24038;&#21491;&#33410;&#28857;&#12290;</span>","<span class=\"c\">     * @method mergeSibling</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#21512;&#24182;&#30340;&#30446;&#26631;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Boolean } ignorePre &#26159;&#21542;&#24573;&#30053;&#21512;&#24182;&#24038;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Boolean } ignoreNext &#26159;&#21542;&#24573;&#30053;&#21512;&#24182;&#21491;&#33410;&#28857;</span>","<span class=\"c\">     * @remind &#22914;&#26524;&#21516;&#26102;&#24573;&#30053;&#24038;&#21491;&#33410;&#28857;&#65292; &#21017;&#35813;&#25805;&#20316;&#20160;&#20040;&#20063;&#19981;&#20250;&#20570;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;b&gt;xxxx&lt;/b&gt;&lt;b id=\"test\"&gt;ooo&lt;/b&gt;&lt;b&gt;xxxx&lt;/b&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var demoNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *     UE.dom.domUtils.mergeSibling( demoNode, false, true );</span>","<span class=\"c\">     *     //output: xxxxooo</span>","<span class=\"c\">     *     console.log( demoNode.innerHTML );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    mergeSibling<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> ignorePre<span class=\"k\">,</span> ignoreNext<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">function</span> merge<span class=\"k\">(</span>rtl<span class=\"k\">,</span> start<span class=\"k\">,</span> node<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> next<span class=\"k\">;</span>","            <span class=\"k\">if</span> <span class=\"k\">((</span>next <span class=\"k\">=</span> node<span class=\"k\">[</span>rtl<span class=\"k\">])</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isBookmarkNode<span class=\"k\">(</span>next<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> next<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>isSameElement<span class=\"k\">(</span>node<span class=\"k\">,</span> next<span class=\"k\">))</span> <span class=\"k\">{</span>","                <span class=\"k\">while</span> <span class=\"k\">(</span>next<span class=\"k\">.</span>firstChild<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>start <span class=\"k\">==</span> <span class=\"s\">'firstChild'</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        node<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>next<span class=\"k\">.</span>lastChild<span class=\"k\">,</span> node<span class=\"k\">.</span>firstChild<span class=\"k\">);</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        node<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>next<span class=\"k\">.</span>firstChild<span class=\"k\">);</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","                domUtils<span class=\"k\">.</span>remove<span class=\"k\">(</span>next<span class=\"k\">);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        <span class=\"k\">!</span>ignorePre <span class=\"k\">&amp;&amp;</span> merge<span class=\"k\">(</span><span class=\"s\">'previousSibling'</span><span class=\"k\">,</span> <span class=\"s\">'firstChild'</span><span class=\"k\">,</span> node<span class=\"k\">);</span>","        <span class=\"k\">!</span>ignoreNext <span class=\"k\">&amp;&amp;</span> merge<span class=\"k\">(</span><span class=\"s\">'nextSibling'</span><span class=\"k\">,</span> <span class=\"s\">'lastChild'</span><span class=\"k\">,</span> node<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#35774;&#32622;&#33410;&#28857;node&#21450;&#20854;&#23376;&#33410;&#28857;&#19981;&#20250;&#34987;&#36873;&#20013;</span>","<span class=\"c\">     * @method unSelectable</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#25191;&#34892;&#25805;&#20316;&#30340;dom&#20803;&#32032;</span>","<span class=\"c\">     * @remind &#25191;&#34892;&#35813;&#25805;&#20316;&#21518;&#30340;&#33410;&#28857;&#65292; &#23558;&#19981;&#33021;&#34987;&#40736;&#26631;&#36873;&#20013;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * UE.dom.domUtils.unSelectable( document.body );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    unSelectable<span class=\"k\">:</span>ie <span class=\"k\">||</span> browser<span class=\"k\">.</span>opera <span class=\"k\">?</span> <span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"c\">//for ie9</span>","        node<span class=\"k\">.</span>onselectstart <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\">false</span><span class=\"k\">;</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","        node<span class=\"k\">.</span>onclick <span class=\"k\">=</span> node<span class=\"k\">.</span>onkeyup <span class=\"k\">=</span> node<span class=\"k\">.</span>onkeydown <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\">false</span><span class=\"k\">;</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","        node<span class=\"k\">.</span>unselectable <span class=\"k\">=</span> <span class=\"s\">'on'</span><span class=\"k\">;</span>","        node<span class=\"k\">.</span>setAttribute<span class=\"k\">(</span><span class=\"s\">\"unselectable\"</span><span class=\"k\">,</span> <span class=\"s\">\"on\"</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> ci<span class=\"k\">;</span> ci <span class=\"k\">=</span> node<span class=\"k\">.</span>all<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","            <span class=\"k\">switch</span> <span class=\"k\">(</span>ci<span class=\"k\">.</span>tagName<span class=\"k\">.</span>toLowerCase<span class=\"k\">())</span> <span class=\"k\">{</span>","                <span class=\"k\">case</span> <span class=\"s\">'iframe'</span> <span class=\"k\">:</span>","                <span class=\"k\">case</span> <span class=\"s\">'textarea'</span> <span class=\"k\">:</span>","                <span class=\"k\">case</span> <span class=\"s\">'input'</span> <span class=\"k\">:</span>","                <span class=\"k\">case</span> <span class=\"s\">'select'</span> <span class=\"k\">:</span>","                    <span class=\"k\">break</span><span class=\"k\">;</span>","                <span class=\"k\">default</span> <span class=\"k\">:</span>","                    ci<span class=\"k\">.</span>unselectable <span class=\"k\">=</span> <span class=\"s\">'on'</span><span class=\"k\">;</span>","                    node<span class=\"k\">.</span>setAttribute<span class=\"k\">(</span><span class=\"s\">\"unselectable\"</span><span class=\"k\">,</span> <span class=\"s\">\"on\"</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>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        node<span class=\"k\">.</span>style<span class=\"k\">.</span>MozUserSelect <span class=\"k\">=</span>","            node<span class=\"k\">.</span>style<span class=\"k\">.</span>webkitUserSelect <span class=\"k\">=</span>","                node<span class=\"k\">.</span>style<span class=\"k\">.</span>KhtmlUserSelect <span class=\"k\">=</span> <span class=\"s\">'none'</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21024;&#38500;&#33410;&#28857;node&#19978;&#30340;&#25351;&#23450;&#23646;&#24615;&#21517;&#31216;&#30340;&#23646;&#24615;</span>","<span class=\"c\">     * @method  removeAttributes</span>","<span class=\"c\">     * @param { String } attrNames &#21487;&#20197;&#26159;&#31354;&#26684;&#38548;&#24320;&#30340;&#22810;&#20010;&#23646;&#24615;&#21517;&#31216;&#65292;&#35813;&#25805;&#20316;&#23558;&#20250;&#20381;&#27425;&#21024;&#38500;&#30456;&#24212;&#30340;&#23646;&#24615;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"wrap\"&gt;</span>","<span class=\"c\">     *      &lt;span style=\"font-size:14px;\" id=\"test\" name=\"followMe\"&gt;xxxxx&lt;/span&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.removeAttributes( document.getElementById( \"test\" ), \"id name\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: &lt;span style=\"font-size:14px;\"&gt;xxxxx&lt;/span&gt;</span>","<span class=\"c\">     *     console.log( document.getElementById(\"wrap\").innerHTML );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21024;&#38500;&#33410;&#28857;node&#19978;&#30340;&#25351;&#23450;&#23646;&#24615;&#21517;&#31216;&#30340;&#23646;&#24615;</span>","<span class=\"c\">     * @method  removeAttributes</span>","<span class=\"c\">     * @param { Array } attrNames &#38656;&#35201;&#21024;&#38500;&#30340;&#23646;&#24615;&#21517;&#25968;&#32452;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"wrap\"&gt;</span>","<span class=\"c\">     *      &lt;span style=\"font-size:14px;\" id=\"test\" name=\"followMe\"&gt;xxxxx&lt;/span&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.removeAttributes( document.getElementById( \"test\" ), [\"id\", \"name\"] );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: &lt;span style=\"font-size:14px;\"&gt;xxxxx&lt;/span&gt;</span>","<span class=\"c\">     *     console.log( document.getElementById(\"wrap\").innerHTML );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    removeAttributes<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> attrNames<span class=\"k\">)</span> <span class=\"k\">{</span>","        attrNames <span class=\"k\">=</span> utils<span class=\"k\">.</span>isArray<span class=\"k\">(</span>attrNames<span class=\"k\">)</span> <span class=\"k\">?</span> attrNames <span class=\"k\">:</span> utils<span class=\"k\">.</span>trim<span class=\"k\">(</span>attrNames<span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/[ ]{2,}/g</span><span class=\"k\">,</span><span class=\"s\">' '</span><span class=\"k\">).</span>split<span class=\"k\">(</span><span class=\"s\">' '</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> ci<span class=\"k\">;</span> ci <span class=\"k\">=</span> attrNames<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","            ci <span class=\"k\">=</span> attrFix<span class=\"k\">[</span>ci<span class=\"k\">]</span> <span class=\"k\">||</span> ci<span class=\"k\">;</span>","            <span class=\"k\">switch</span> <span class=\"k\">(</span>ci<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">case</span> <span class=\"s\">'className'</span><span class=\"k\">:</span>","                    node<span class=\"k\">[</span>ci<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"s\">''</span><span class=\"k\">;</span>","                    <span class=\"k\">break</span><span class=\"k\">;</span>","                <span class=\"k\">case</span> <span class=\"s\">'style'</span><span class=\"k\">:</span>","                    node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">=</span> <span class=\"s\">''</span><span class=\"k\">;</span>","                    <span class=\"k\">!</span>browser<span class=\"k\">.</span>ie <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>removeAttributeNode<span class=\"k\">(</span>node<span class=\"k\">.</span>getAttributeNode<span class=\"k\">(</span><span class=\"s\">'style'</span><span class=\"k\">))</span>","            <span class=\"k\">}</span>","            node<span class=\"k\">.</span>removeAttribute<span class=\"k\">(</span>ci<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#22312;doc&#19979;&#21019;&#24314;&#19968;&#20010;&#26631;&#31614;&#21517;&#20026;tag&#65292;&#23646;&#24615;&#20026;attrs&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @method createElement</span>","<span class=\"c\">     * @param { DomDocument } doc &#26032;&#21019;&#24314;&#30340;&#20803;&#32032;&#23646;&#20110;&#35813;document&#33410;&#28857;&#21019;&#24314;</span>","<span class=\"c\">     * @param { String } tagName &#38656;&#35201;&#21019;&#24314;&#30340;&#20803;&#32032;&#30340;&#26631;&#31614;&#21517;</span>","<span class=\"c\">     * @param { KeyValueMap } attrs &#26032;&#21019;&#24314;&#30340;&#20803;&#32032;&#30340;&#23646;&#24615;key-value&#38598;&#21512;</span>","<span class=\"c\">     * @return { Element } &#26032;&#21019;&#24314;&#30340;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var ele = UE.dom.domUtils.createElement( document, 'div', {</span>","<span class=\"c\">     *     id: 'test'</span>","<span class=\"c\">     * } );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: DIV</span>","<span class=\"c\">     * console.log( ele.tagName );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: test</span>","<span class=\"c\">     * console.log( ele.id );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    createElement<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>doc<span class=\"k\">,</span> tag<span class=\"k\">,</span> attrs<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> domUtils<span class=\"k\">.</span>setAttributes<span class=\"k\">(</span>doc<span class=\"k\">.</span>createElement<span class=\"k\">(</span>tag<span class=\"k\">),</span> attrs<span class=\"k\">)</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#20026;&#33410;&#28857;node&#28155;&#21152;&#23646;&#24615;attrs&#65292;attrs&#20026;&#23646;&#24615;&#38190;&#20540;&#23545;</span>","<span class=\"c\">     * @method setAttributes</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#35774;&#32622;&#23646;&#24615;&#30340;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * @param { KeyValueMap } attrs &#38656;&#35201;&#35774;&#32622;&#30340;&#23646;&#24615;&#21517;-&#20540;&#23545;</span>","<span class=\"c\">     * @return { Element } &#35774;&#32622;&#23646;&#24615;&#30340;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var testNode = UE.dom.domUtils.setAttributes( document.getElementById( \"test\" ), {</span>","<span class=\"c\">     *         id: 'demo'</span>","<span class=\"c\">     *     } );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: demo</span>","<span class=\"c\">     *     console.log( testNode.id );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     */</span>","    setAttributes<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> attrs<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> attr <span class=\"k\">in</span> attrs<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span><span class=\"k\">(</span>attrs<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>attr<span class=\"k\">))</span><span class=\"k\">{</span>","                <span class=\"k\">var</span> value <span class=\"k\">=</span> attrs<span class=\"k\">[</span>attr<span class=\"k\">];</span>","                <span class=\"k\">switch</span> <span class=\"k\">(</span>attr<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">case</span> <span class=\"s\">'class'</span><span class=\"k\">:</span>","                        <span class=\"c\">//ie&#19979;&#35201;&#36825;&#26679;&#36171;&#20540;&#65292;setAttribute&#19981;&#36215;&#20316;&#29992;</span>","                        node<span class=\"k\">.</span>className <span class=\"k\">=</span> value<span class=\"k\">;</span>","                        <span class=\"k\">break</span><span class=\"k\">;</span>","                    <span class=\"k\">case</span> <span class=\"s\">'style'</span> <span class=\"k\">:</span>","                        node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">=</span> node<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">+</span> <span class=\"s\">\";\"</span> <span class=\"k\">+</span> value<span class=\"k\">;</span>","                        <span class=\"k\">break</span><span class=\"k\">;</span>","                    <span class=\"k\">case</span> <span class=\"s\">'innerHTML'</span><span class=\"k\">:</span>","                        node<span class=\"k\">[</span>attr<span class=\"k\">]</span> <span class=\"k\">=</span> value<span class=\"k\">;</span>","                        <span class=\"k\">break</span><span class=\"k\">;</span>","                    <span class=\"k\">case</span> <span class=\"s\">'value'</span><span class=\"k\">:</span>","                        node<span class=\"k\">.</span>value <span class=\"k\">=</span> value<span class=\"k\">;</span>","                        <span class=\"k\">break</span><span class=\"k\">;</span>","                    <span class=\"k\">default</span><span class=\"k\">:</span>","                        node<span class=\"k\">.</span>setAttribute<span class=\"k\">(</span>attrFix<span class=\"k\">[</span>attr<span class=\"k\">]</span> <span class=\"k\">||</span> attr<span class=\"k\">,</span> value<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> node<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#33719;&#21462;&#20803;&#32032;element&#32463;&#36807;&#35745;&#31639;&#21518;&#30340;&#26679;&#24335;&#20540;</span>","<span class=\"c\">     * @method getComputedStyle</span>","<span class=\"c\">     * @param { Element } element &#38656;&#35201;&#33719;&#21462;&#26679;&#24335;&#30340;&#20803;&#32032;&#23545;&#35937;</span>","<span class=\"c\">     * @param { String } styleName &#38656;&#35201;&#33719;&#21462;&#30340;&#26679;&#24335;&#21517;</span>","<span class=\"c\">     * @return { String } &#33719;&#21462;&#21040;&#30340;&#26679;&#24335;&#20540;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;style type=\"text/css\"&gt;</span>","<span class=\"c\">     *      #test {</span>","<span class=\"c\">     *          font-size: 15px;</span>","<span class=\"c\">     *      }</span>","<span class=\"c\">     * &lt;/style&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;span id=\"test\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     //output: 15px</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.getComputedStyle( document.getElementById( \"test\" ), 'font-size' ) );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    getComputedStyle<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> styleName<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"c\">//&#19968;&#19979;&#30340;&#23646;&#24615;&#21333;&#29420;&#22788;&#29702;</span>","        <span class=\"k\">var</span> pros <span class=\"k\">=</span> <span class=\"s\">'width height top left'</span><span class=\"k\">;</span>","","        <span class=\"k\">if</span><span class=\"k\">(</span>pros<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>styleName<span class=\"k\">)</span> <span class=\"k\">&gt;</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">return</span> element<span class=\"k\">[</span><span class=\"s\">'offset'</span> <span class=\"k\">+</span> styleName<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"s\">/^\\w/</span><span class=\"k\">,</span><span class=\"k\">function</span><span class=\"k\">(</span>s<span class=\"k\">)</span><span class=\"k\">{</span><span class=\"k\">return</span> s<span class=\"k\">.</span>toUpperCase<span class=\"k\">()</span><span class=\"k\">}</span><span class=\"k\">)]</span> <span class=\"k\">+</span> <span class=\"s\">'px'</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"c\">//&#24573;&#30053;&#25991;&#26412;&#33410;&#28857;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>element<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">3</span><span class=\"k\">)</span> <span class=\"k\">{</span>","            element <span class=\"k\">=</span> element<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"c\">//ie&#19979;font-size&#33509;body&#19979;&#23450;&#20041;&#20102;font-size&#65292;&#21017;&#20174;currentStyle&#37324;&#20250;&#21462;&#21040;&#36825;&#20010;font-size. &#21462;&#19981;&#21040;&#23454;&#38469;&#20540;&#65292;&#25925;&#27492;&#20462;&#25913;.</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>browser<span class=\"k\">.</span>ie <span class=\"k\">&amp;&amp;</span> browser<span class=\"k\">.</span>version <span class=\"k\">&lt;</span> <span class=\"s\">9</span> <span class=\"k\">&amp;&amp;</span> styleName <span class=\"k\">==</span> <span class=\"s\">'font-size'</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>element<span class=\"k\">.</span>style<span class=\"k\">.</span>fontSize <span class=\"k\">&amp;&amp;</span>","            <span class=\"k\">!</span>dtd<span class=\"k\">.</span>$empty<span class=\"k\">[</span>element<span class=\"k\">.</span>tagName<span class=\"k\">]</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>dtd<span class=\"k\">.</span>$nonChild<span class=\"k\">[</span>element<span class=\"k\">.</span>tagName<span class=\"k\">])</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> span <span class=\"k\">=</span> element<span class=\"k\">.</span>ownerDocument<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">'span'</span><span class=\"k\">);</span>","            span<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">=</span> <span class=\"s\">'padding:0;border:0;font-family:simsun;'</span><span class=\"k\">;</span>","            span<span class=\"k\">.</span>innerHTML <span class=\"k\">=</span> <span class=\"s\">'.'</span><span class=\"k\">;</span>","            element<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>span<span class=\"k\">);</span>","            <span class=\"k\">var</span> result <span class=\"k\">=</span> span<span class=\"k\">.</span>offsetHeight<span class=\"k\">;</span>","            element<span class=\"k\">.</span>removeChild<span class=\"k\">(</span>span<span class=\"k\">);</span>","            span <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","            <span class=\"k\">return</span> result <span class=\"k\">+</span> <span class=\"s\">'px'</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">try</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> value <span class=\"k\">=</span> domUtils<span class=\"k\">.</span>getStyle<span class=\"k\">(</span>element<span class=\"k\">,</span> styleName<span class=\"k\">)</span> <span class=\"k\">||</span>","                <span class=\"k\">(</span>window<span class=\"k\">.</span>getComputedStyle <span class=\"k\">?</span> domUtils<span class=\"k\">.</span>getWindow<span class=\"k\">(</span>element<span class=\"k\">).</span>getComputedStyle<span class=\"k\">(</span>element<span class=\"k\">,</span> <span class=\"s\">''</span><span class=\"k\">).</span>getPropertyValue<span class=\"k\">(</span>styleName<span class=\"k\">)</span> <span class=\"k\">:</span>","                    <span class=\"k\">(</span> element<span class=\"k\">.</span>currentStyle <span class=\"k\">||</span> element<span class=\"k\">.</span>style <span class=\"k\">)[</span>utils<span class=\"k\">.</span>cssStyleToDomStyle<span class=\"k\">(</span>styleName<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\">return</span> <span class=\"s\">\"\"</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> utils<span class=\"k\">.</span>transUnitToPx<span class=\"k\">(</span>utils<span class=\"k\">.</span>fixColor<span class=\"k\">(</span>styleName<span class=\"k\">,</span> value<span class=\"k\">));</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21024;&#38500;&#20803;&#32032;element&#25351;&#23450;&#30340;className</span>","<span class=\"c\">     * @method removeClasses</span>","<span class=\"c\">     * @param { Element } ele &#38656;&#35201;&#21024;&#38500;class&#30340;&#20803;&#32032;&#33410;&#28857;</span>","<span class=\"c\">     * @param { String } classNames &#38656;&#35201;&#21024;&#38500;&#30340;className&#65292; &#22810;&#20010;className&#20043;&#38388;&#20197;&#31354;&#26684;&#20998;&#24320;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test\" class=\"test1 test2 test3\"&gt;xxx&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var testNode = document.getElementById( \"test\" );</span>","<span class=\"c\">     *     UE.dom.domUtils.removeClasses( testNode, \"test1 test2\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: test3</span>","<span class=\"c\">     *     console.log( testNode.className );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21024;&#38500;&#20803;&#32032;element&#25351;&#23450;&#30340;className</span>","<span class=\"c\">     * @method removeClasses</span>","<span class=\"c\">     * @param { Element } ele &#38656;&#35201;&#21024;&#38500;class&#30340;&#20803;&#32032;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Array } classNames &#38656;&#35201;&#21024;&#38500;&#30340;className&#25968;&#32452;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test\" class=\"test1 test2 test3\"&gt;xxx&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var testNode = document.getElementById( \"test\" );</span>","<span class=\"c\">     *     UE.dom.domUtils.removeClasses( testNode, [\"test1\", \"test2\"] );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: test3</span>","<span class=\"c\">     *     console.log( testNode.className );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    removeClasses<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>elm<span class=\"k\">,</span> classNames<span class=\"k\">)</span> <span class=\"k\">{</span>","        classNames <span class=\"k\">=</span> utils<span class=\"k\">.</span>isArray<span class=\"k\">(</span>classNames<span class=\"k\">)</span> <span class=\"k\">?</span> classNames <span class=\"k\">:</span>","            utils<span class=\"k\">.</span>trim<span class=\"k\">(</span>classNames<span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/[ ]{2,}/g</span><span class=\"k\">,</span><span class=\"s\">' '</span><span class=\"k\">).</span>split<span class=\"k\">(</span><span class=\"s\">' '</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>ci<span class=\"k\">,</span>cls <span class=\"k\">=</span> elm<span class=\"k\">.</span>className<span class=\"k\">;</span>ci<span class=\"k\">=</span>classNames<span class=\"k\">[</span>i<span class=\"k\">++];)</span><span class=\"k\">{</span>","            cls <span class=\"k\">=</span> cls<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'</span><span class=\"t\">\\\\</span><span class=\"s\">b'</span> <span class=\"k\">+</span> ci <span class=\"k\">+</span> <span class=\"s\">'</span><span class=\"t\">\\\\</span><span class=\"s\">b'</span><span class=\"k\">),</span><span class=\"s\">''</span><span class=\"k\">)</span>","        <span class=\"k\">}</span>","        cls <span class=\"k\">=</span> utils<span class=\"k\">.</span>trim<span class=\"k\">(</span>cls<span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/[ ]{2,}/g</span><span class=\"k\">,</span><span class=\"s\">' '</span><span class=\"k\">);</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>cls<span class=\"k\">)</span><span class=\"k\">{</span>","            elm<span class=\"k\">.</span>className <span class=\"k\">=</span> cls<span class=\"k\">;</span>","        <span class=\"k\">}</span><span class=\"k\">else</span><span class=\"k\">{</span>","            domUtils<span class=\"k\">.</span>removeAttributes<span class=\"k\">(</span>elm<span class=\"k\">,[</span><span class=\"s\">'class'</span><span class=\"k\">]);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#32473;&#20803;&#32032;element&#28155;&#21152;className</span>","<span class=\"c\">     * @method addClass</span>","<span class=\"c\">     * @param { Node } ele &#38656;&#35201;&#22686;&#21152;className&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { String } classNames &#38656;&#35201;&#28155;&#21152;&#30340;className&#65292; &#22810;&#20010;className&#20043;&#38388;&#20197;&#31354;&#26684;&#20998;&#21106;</span>","<span class=\"c\">     * @remind &#30456;&#21516;&#30340;&#31867;&#21517;&#19981;&#20250;&#34987;&#37325;&#22797;&#28155;&#21152;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test\" class=\"cls1 cls2\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var testNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.addClass( testNode, \"cls2 cls3 cls4\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: cl1 cls2 cls3 cls4</span>","<span class=\"c\">     *     console.log( testNode.className );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#32473;&#20803;&#32032;element&#28155;&#21152;className</span>","<span class=\"c\">     * @method addClass</span>","<span class=\"c\">     * @param { Node } ele &#38656;&#35201;&#22686;&#21152;className&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { Array } classNames &#38656;&#35201;&#28155;&#21152;&#30340;className&#30340;&#25968;&#32452;</span>","<span class=\"c\">     * @remind &#30456;&#21516;&#30340;&#31867;&#21517;&#19981;&#20250;&#34987;&#37325;&#22797;&#28155;&#21152;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test\" class=\"cls1 cls2\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var testNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.addClass( testNode, [\"cls2\", \"cls3\", \"cls4\"] );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: cl1 cls2 cls3 cls4</span>","<span class=\"c\">     *     console.log( testNode.className );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    addClass<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>elm<span class=\"k\">,</span> classNames<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span><span class=\"k\">(!</span>elm<span class=\"k\">)</span><span class=\"k\">return</span><span class=\"k\">;</span>","        classNames <span class=\"k\">=</span> utils<span class=\"k\">.</span>trim<span class=\"k\">(</span>classNames<span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/[ ]{2,}/g</span><span class=\"k\">,</span><span class=\"s\">' '</span><span class=\"k\">).</span>split<span class=\"k\">(</span><span class=\"s\">' '</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>ci<span class=\"k\">,</span>cls <span class=\"k\">=</span> elm<span class=\"k\">.</span>className<span class=\"k\">;</span>ci<span class=\"k\">=</span>classNames<span class=\"k\">[</span>i<span class=\"k\">++];)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span><span class=\"k\">(!</span><span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'</span><span class=\"t\">\\\\</span><span class=\"s\">b'</span> <span class=\"k\">+</span> ci <span class=\"k\">+</span> <span class=\"s\">'</span><span class=\"t\">\\\\</span><span class=\"s\">b'</span><span class=\"k\">).</span>test<span class=\"k\">(</span>cls<span class=\"k\">))</span><span class=\"k\">{</span>","                elm<span class=\"k\">.</span>className <span class=\"k\">+=</span> <span class=\"s\">' '</span> <span class=\"k\">+</span> ci<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\">     * &#21028;&#26029;&#20803;&#32032;element&#26159;&#21542;&#21253;&#21547;&#32473;&#23450;&#30340;&#26679;&#24335;&#31867;&#21517;className</span>","<span class=\"c\">     * @method hasClass</span>","<span class=\"c\">     * @param { Node } ele &#38656;&#35201;&#26816;&#27979;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { String } classNames &#38656;&#35201;&#26816;&#27979;&#30340;className&#65292; &#22810;&#20010;className&#20043;&#38388;&#29992;&#31354;&#26684;&#20998;&#21106;</span>","<span class=\"c\">     * @return { Boolean } &#20803;&#32032;&#26159;&#21542;&#21253;&#21547;&#25152;&#26377;&#32473;&#23450;&#30340;className</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test1\" class=\"cls1 cls2\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var test1 = document.getElementById(\"test1\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: false</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.hasClass( test1, \"cls2 cls1 cls3\" ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.hasClass( test1, \"cls2 cls1\" ) );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21028;&#26029;&#20803;&#32032;element&#26159;&#21542;&#21253;&#21547;&#32473;&#23450;&#30340;&#26679;&#24335;&#31867;&#21517;className</span>","<span class=\"c\">     * @method hasClass</span>","<span class=\"c\">     * @param { Node } ele &#38656;&#35201;&#26816;&#27979;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { Array } classNames &#38656;&#35201;&#26816;&#27979;&#30340;className&#25968;&#32452;</span>","<span class=\"c\">     * @return { Boolean } &#20803;&#32032;&#26159;&#21542;&#21253;&#21547;&#25152;&#26377;&#32473;&#23450;&#30340;className</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test1\" class=\"cls1 cls2\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var test1 = document.getElementById(\"test1\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: false</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.hasClass( test1, [ \"cls2\", \"cls1\", \"cls3\" ] ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.hasClass( test1, [ \"cls2\", \"cls1\" ]) );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    hasClass<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> className<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>utils<span class=\"k\">.</span>isRegExp<span class=\"k\">(</span>className<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">return</span> className<span class=\"k\">.</span>test<span class=\"k\">(</span>element<span class=\"k\">.</span>className<span class=\"k\">)</span>","        <span class=\"k\">}</span>","        className <span class=\"k\">=</span> utils<span class=\"k\">.</span>trim<span class=\"k\">(</span>className<span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/[ ]{2,}/g</span><span class=\"k\">,</span><span class=\"s\">' '</span><span class=\"k\">).</span>split<span class=\"k\">(</span><span class=\"s\">' '</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>ci<span class=\"k\">,</span>cls <span class=\"k\">=</span> element<span class=\"k\">.</span>className<span class=\"k\">;</span>ci<span class=\"k\">=</span>className<span class=\"k\">[</span>i<span class=\"k\">++];)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span><span class=\"k\">(!</span><span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'</span><span class=\"t\">\\\\</span><span class=\"s\">b'</span> <span class=\"k\">+</span> ci <span class=\"k\">+</span> <span class=\"s\">'</span><span class=\"t\">\\\\</span><span class=\"s\">b'</span><span class=\"k\">,</span><span class=\"s\">'i'</span><span class=\"k\">).</span>test<span class=\"k\">(</span>cls<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\">return</span> i <span class=\"k\">-</span> <span class=\"s\">1</span> <span class=\"k\">==</span> className<span class=\"k\">.</span>length<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#38459;&#27490;&#20107;&#20214;&#40664;&#35748;&#34892;&#20026;</span>","<span class=\"c\">     * @method preventDefault</span>","<span class=\"c\">     * @param { Event } evt &#38656;&#35201;&#38459;&#27490;&#40664;&#35748;&#34892;&#20026;&#30340;&#20107;&#20214;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * UE.dom.domUtils.preventDefault( evt );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    preventDefault<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>evt<span class=\"k\">)</span> <span class=\"k\">{</span>","        evt<span class=\"k\">.</span>preventDefault <span class=\"k\">?</span> evt<span class=\"k\">.</span>preventDefault<span class=\"k\">()</span> <span class=\"k\">:</span> <span class=\"k\">(</span>evt<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=\"c\">/**</span>","<span class=\"c\">     * &#21024;&#38500;&#20803;&#32032;element&#25351;&#23450;&#30340;&#26679;&#24335;</span>","<span class=\"c\">     * @method removeStyle</span>","<span class=\"c\">     * @param { Element } element &#38656;&#35201;&#21024;&#38500;&#26679;&#24335;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { String } styleName &#38656;&#35201;&#21024;&#38500;&#30340;&#26679;&#24335;&#21517;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;span id=\"test\" style=\"color: red; background: blue;\"&gt;&lt;/span&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var testNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.removeStyle( testNode, 'color' );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: background: blue;</span>","<span class=\"c\">     *     console.log( testNode.style.cssText );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    removeStyle<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> name<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>browser<span class=\"k\">.</span>ie <span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"c\">//&#38024;&#23545;color&#20808;&#21333;&#29420;&#22788;&#29702;&#19968;&#19979;</span>","            <span class=\"k\">if</span><span class=\"k\">(</span>name <span class=\"k\">==</span> <span class=\"s\">'color'</span><span class=\"k\">)</span><span class=\"k\">{</span>","                name <span class=\"k\">=</span> <span class=\"s\">'(^|;)'</span> <span class=\"k\">+</span> name<span class=\"k\">;</span>","            <span class=\"k\">}</span>","            element<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText <span class=\"k\">=</span> element<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"k\">new</span> RegExp<span class=\"k\">(</span>name <span class=\"k\">+</span> <span class=\"s\">'[^:]*:[^;]+;?'</span><span class=\"k\">,</span><span class=\"s\">'ig'</span><span class=\"k\">),</span><span class=\"s\">''</span><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>element<span class=\"k\">.</span>style<span class=\"k\">.</span>removeProperty<span class=\"k\">)</span> <span class=\"k\">{</span>","                element<span class=\"k\">.</span>style<span class=\"k\">.</span>removeProperty <span class=\"k\">(</span>name<span class=\"k\">);</span>","            <span class=\"k\">}</span><span class=\"k\">else</span> <span class=\"k\">{</span>","                element<span class=\"k\">.</span>style<span class=\"k\">.</span>removeAttribute <span class=\"k\">(</span>utils<span class=\"k\">.</span>cssStyleToDomStyle<span class=\"k\">(</span>name<span class=\"k\">));</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","","        <span class=\"k\">if</span> <span class=\"k\">(!</span>element<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">)</span> <span class=\"k\">{</span>","            domUtils<span class=\"k\">.</span>removeAttributes<span class=\"k\">(</span>element<span class=\"k\">,</span> <span class=\"k\">[</span><span class=\"s\">'style'</span><span class=\"k\">]);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#33719;&#21462;&#20803;&#32032;element&#30340;style&#23646;&#24615;&#30340;&#25351;&#23450;&#20540;</span>","<span class=\"c\">     * @method getStyle</span>","<span class=\"c\">     * @param { Element } element &#38656;&#35201;&#33719;&#21462;&#23646;&#24615;&#20540;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { String } styleName &#38656;&#35201;&#33719;&#21462;&#30340;style&#30340;&#21517;&#31216;</span>","<span class=\"c\">     * @warning &#35813;&#26041;&#27861;&#20165;&#33719;&#21462;&#20803;&#32032;style&#23646;&#24615;&#20013;&#25152;&#26631;&#26126;&#30340;&#20540;</span>","<span class=\"c\">     * @return { String } &#35813;&#20803;&#32032;&#21253;&#21547;&#25351;&#23450;&#30340;style&#23646;&#24615;&#20540;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\" style=\"color: red;\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      var testNode = document.getElementById( \"test\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      //output: red</span>","<span class=\"c\">     *      console.log( UE.dom.domUtils.getStyle( testNode, \"color\" ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      //output: \"\"</span>","<span class=\"c\">     *      console.log( UE.dom.domUtils.getStyle( testNode, \"background\" ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    getStyle<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> name<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> value <span class=\"k\">=</span> element<span class=\"k\">.</span>style<span class=\"k\">[</span> utils<span class=\"k\">.</span>cssStyleToDomStyle<span class=\"k\">(</span>name<span class=\"k\">)</span> <span class=\"k\">];</span>","        <span class=\"k\">return</span> utils<span class=\"k\">.</span>fixColor<span class=\"k\">(</span>name<span class=\"k\">,</span> value<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#20026;&#20803;&#32032;element&#35774;&#32622;&#26679;&#24335;&#23646;&#24615;&#20540;</span>","<span class=\"c\">     * @method setStyle</span>","<span class=\"c\">     * @param { Element } element &#38656;&#35201;&#35774;&#32622;&#26679;&#24335;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { String } styleName &#26679;&#24335;&#21517;</span>","<span class=\"c\">     * @param { String } styleValue &#26679;&#24335;&#20540;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      var testNode = document.getElementById( \"test\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      //output: \"\"</span>","<span class=\"c\">     *      console.log( testNode.style.color );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      UE.dom.domUtils.setStyle( testNode, 'color', 'red' );</span>","<span class=\"c\">     *      //output: \"red\"</span>","<span class=\"c\">     *      console.log( testNode.style.color );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    setStyle<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> name<span class=\"k\">,</span> value<span class=\"k\">)</span> <span class=\"k\">{</span>","        element<span class=\"k\">.</span>style<span class=\"k\">[</span>utils<span class=\"k\">.</span>cssStyleToDomStyle<span class=\"k\">(</span>name<span class=\"k\">)]</span> <span class=\"k\">=</span> value<span class=\"k\">;</span>","        <span class=\"k\">if</span><span class=\"k\">(!</span>utils<span class=\"k\">.</span>trim<span class=\"k\">(</span>element<span class=\"k\">.</span>style<span class=\"k\">.</span>cssText<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>removeAttributes<span class=\"k\">(</span>element<span class=\"k\">,</span><span class=\"s\">'style'</span><span class=\"k\">)</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#20026;&#20803;&#32032;element&#35774;&#32622;&#22810;&#20010;&#26679;&#24335;&#23646;&#24615;&#20540;</span>","<span class=\"c\">     * @method setStyles</span>","<span class=\"c\">     * @param { Element } element &#38656;&#35201;&#35774;&#32622;&#26679;&#24335;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { KeyValueMap } styles &#26679;&#24335;&#21517;&#20540;&#23545;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      var testNode = document.getElementById( \"test\" );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      //output: \"\"</span>","<span class=\"c\">     *      console.log( testNode.style.color );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *      UE.dom.domUtils.setStyles( testNode, {</span>","<span class=\"c\">     *          'color': 'red'</span>","<span class=\"c\">     *      } );</span>","<span class=\"c\">     *      //output: \"red\"</span>","<span class=\"c\">     *      console.log( testNode.style.color );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    setStyles<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> styles<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> name <span class=\"k\">in</span> styles<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>styles<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>name<span class=\"k\">))</span> <span class=\"k\">{</span>","                domUtils<span class=\"k\">.</span>setStyle<span class=\"k\">(</span>element<span class=\"k\">,</span> name<span class=\"k\">,</span> styles<span class=\"k\">[</span>name<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\">     * &#21024;&#38500;_moz_dirty&#23646;&#24615;</span>","<span class=\"c\">     * @method removeDirtyAttr</span>","<span class=\"c\">     */</span>","    removeDirtyAttr<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<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> ci<span class=\"k\">,</span> nodes <span class=\"k\">=</span> node<span class=\"k\">.</span>getElementsByTagName<span class=\"k\">(</span><span class=\"s\">'*'</span><span class=\"k\">);</span> ci <span class=\"k\">=</span> nodes<span class=\"k\">[</span>i<span class=\"k\">++];)</span> <span class=\"k\">{</span>","            ci<span class=\"k\">.</span>removeAttribute<span class=\"k\">(</span><span class=\"s\">'_moz_dirty'</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        node<span class=\"k\">.</span>removeAttribute<span class=\"k\">(</span><span class=\"s\">'_moz_dirty'</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#33719;&#21462;&#23376;&#33410;&#28857;&#30340;&#25968;&#37327;</span>","<span class=\"c\">     * @method getChildCount</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#26816;&#27979;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @return { Number } &#32473;&#23450;&#30340;node&#20803;&#32032;&#30340;&#23376;&#33410;&#28857;&#25968;&#37327;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;</span>","<span class=\"c\">     *      &lt;span&gt;&lt;/span&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: 3</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.getChildCount( document.getElementById(\"test\") ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26681;&#25454;&#32473;&#23450;&#30340;&#36807;&#28388;&#35268;&#21017;&#65292; &#33719;&#21462;&#31526;&#21512;&#26465;&#20214;&#30340;&#23376;&#33410;&#28857;&#30340;&#25968;&#37327;</span>","<span class=\"c\">     * @method getChildCount</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#26816;&#27979;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { Function } fn &#36807;&#28388;&#22120;&#65292; &#35201;&#27714;&#23545;&#31526;&#21512;&#26465;&#20214;&#30340;&#23376;&#33410;&#28857;&#36820;&#22238;true&#65292; &#21453;&#20043;&#21017;&#35201;&#27714;&#36820;&#22238;false</span>","<span class=\"c\">     * @return { Number } &#31526;&#21512;&#36807;&#28388;&#26465;&#20214;&#30340;node&#20803;&#32032;&#30340;&#23376;&#33410;&#28857;&#25968;&#37327;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;</span>","<span class=\"c\">     *      &lt;span&gt;&lt;/span&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: 1</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.getChildCount( document.getElementById(\"test\"), function ( node ) {</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *         return node.nodeType === 1;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     } ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    getChildCount<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> fn<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> count <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span> first <span class=\"k\">=</span> node<span class=\"k\">.</span>firstChild<span class=\"k\">;</span>","        fn <span class=\"k\">=</span> fn <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\">1</span><span class=\"k\">;</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>first<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>fn<span class=\"k\">(</span>first<span class=\"k\">))</span> <span class=\"k\">{</span>","                count<span class=\"k\">++;</span>","            <span class=\"k\">}</span>","            first <span class=\"k\">=</span> first<span class=\"k\">.</span>nextSibling<span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> count<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21028;&#26029;&#32473;&#23450;&#33410;&#28857;&#26159;&#21542;&#20026;&#31354;&#33410;&#28857;</span>","<span class=\"c\">     * @method isEmptyNode</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#33410;&#28857;&#26159;&#21542;&#20026;&#31354;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * UE.dom.domUtils.isEmptyNode( document.body );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isEmptyNode<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">!</span>node<span class=\"k\">.</span>firstChild <span class=\"k\">||</span> domUtils<span class=\"k\">.</span>getChildCount<span class=\"k\">(</span>node<span class=\"k\">,</span> <span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span>  <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isBr<span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isBookmarkNode<span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isWhitespace<span class=\"k\">(</span>node<span class=\"k\">)</span>","        <span class=\"k\">}</span><span class=\"k\">)</span> <span class=\"k\">==</span> <span class=\"s\">0</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#28165;&#31354;&#32473;&#23450;&#33410;&#28857;&#25152;&#26377;&#30340;className</span>","<span class=\"c\">     * @method clearSelectedArr</span>","<span class=\"c\">     * @param { Array } nodes &#38656;&#35201;&#28165;&#31354;className&#30340;&#33410;&#28857;&#30340;&#25968;&#32452;&#38598;&#21512;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * UE.dom.domUtils.clearSelectedArr( [ document.body, document.body.firstChild ] );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    clearSelectedArr<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>nodes<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> node<span class=\"k\">;</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>node <span class=\"k\">=</span> nodes<span class=\"k\">.</span>pop<span class=\"k\">())</span> <span class=\"k\">{</span>","            domUtils<span class=\"k\">.</span>removeAttributes<span class=\"k\">(</span>node<span class=\"k\">,</span> <span class=\"k\">[</span><span class=\"s\">'class'</span><span class=\"k\">]);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#23558;&#26174;&#31034;&#21306;&#22495;&#28378;&#21160;&#21040;&#25351;&#23450;&#33410;&#28857;&#30340;&#20301;&#32622;</span>","<span class=\"c\">     * @method scrollToView</span>","<span class=\"c\">     * @param    {Node}   node    &#33410;&#28857;</span>","<span class=\"c\">     * @param    {window}   win      window&#23545;&#35937;</span>","<span class=\"c\">     * @param    {Number}    offsetTop    &#36317;&#31163;&#19978;&#26041;&#30340;&#20559;&#31227;&#37327;</span>","<span class=\"c\">     */</span>","    scrollToView<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> win<span class=\"k\">,</span> offsetTop<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> getViewPaneSize <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> doc <span class=\"k\">=</span> win<span class=\"k\">.</span>document<span class=\"k\">,</span>","                    mode <span class=\"k\">=</span> doc<span class=\"k\">.</span>compatMode <span class=\"k\">==</span> <span class=\"s\">'CSS1Compat'</span><span class=\"k\">;</span>","                <span class=\"k\">return</span> <span class=\"k\">{</span>","                    width<span class=\"k\">:(</span> mode <span class=\"k\">?</span> doc<span class=\"k\">.</span>documentElement<span class=\"k\">.</span>clientWidth <span class=\"k\">:</span> doc<span class=\"k\">.</span>body<span class=\"k\">.</span>clientWidth <span class=\"k\">)</span> <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">,</span>","                    height<span class=\"k\">:(</span> mode <span class=\"k\">?</span> doc<span class=\"k\">.</span>documentElement<span class=\"k\">.</span>clientHeight <span class=\"k\">:</span> doc<span class=\"k\">.</span>body<span class=\"k\">.</span>clientHeight <span class=\"k\">)</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>","            getScrollPosition <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>win<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">'pageXOffset'</span> <span class=\"k\">in</span> win<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">return</span> <span class=\"k\">{</span>","                        x<span class=\"k\">:</span>win<span class=\"k\">.</span>pageXOffset <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">,</span>","                        y<span class=\"k\">:</span>win<span class=\"k\">.</span>pageYOffset <span class=\"k\">||</span> <span class=\"s\">0</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\">var</span> doc <span class=\"k\">=</span> win<span class=\"k\">.</span>document<span class=\"k\">;</span>","                    <span class=\"k\">return</span> <span class=\"k\">{</span>","                        x<span class=\"k\">:</span>doc<span class=\"k\">.</span>documentElement<span class=\"k\">.</span>scrollLeft <span class=\"k\">||</span> doc<span class=\"k\">.</span>body<span class=\"k\">.</span>scrollLeft <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">,</span>","                        y<span class=\"k\">:</span>doc<span class=\"k\">.</span>documentElement<span class=\"k\">.</span>scrollTop <span class=\"k\">||</span> doc<span class=\"k\">.</span>body<span class=\"k\">.</span>scrollTop <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=\"k\">;</span>","        <span class=\"k\">var</span> winHeight <span class=\"k\">=</span> getViewPaneSize<span class=\"k\">().</span>height<span class=\"k\">,</span> offset <span class=\"k\">=</span> winHeight <span class=\"k\">*</span> <span class=\"k\">-</span><span class=\"s\">1</span> <span class=\"k\">+</span> offsetTop<span class=\"k\">;</span>","        offset <span class=\"k\">+=</span> <span class=\"k\">(</span>node<span class=\"k\">.</span>offsetHeight <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">);</span>","        <span class=\"k\">var</span> elementPosition <span class=\"k\">=</span> domUtils<span class=\"k\">.</span>getXY<span class=\"k\">(</span>node<span class=\"k\">);</span>","        offset <span class=\"k\">+=</span> elementPosition<span class=\"k\">.</span>y<span class=\"k\">;</span>","        <span class=\"k\">var</span> currentScroll <span class=\"k\">=</span> getScrollPosition<span class=\"k\">(</span>win<span class=\"k\">).</span>y<span class=\"k\">;</span>","        <span class=\"c\">// offset += 50;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>offset <span class=\"k\">&gt;</span> currentScroll <span class=\"k\">||</span> offset <span class=\"k\">&lt;</span> currentScroll <span class=\"k\">-</span> winHeight<span class=\"k\">)</span> <span class=\"k\">{</span>","            win<span class=\"k\">.</span>scrollTo<span class=\"k\">(</span><span class=\"s\">0</span><span class=\"k\">,</span> offset <span class=\"k\">+</span> <span class=\"k\">(</span>offset <span class=\"k\">&lt;</span> <span class=\"s\">0</span> <span class=\"k\">?</span> <span class=\"k\">-</span><span class=\"s\">20</span> <span class=\"k\">:</span> <span class=\"s\">20</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21028;&#26029;&#32473;&#23450;&#33410;&#28857;&#26159;&#21542;&#20026;br</span>","<span class=\"c\">     * @method isBr</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#21028;&#26029;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#32473;&#23450;&#30340;&#33410;&#28857;&#26159;&#21542;&#26159;br&#33410;&#28857;</span>","<span class=\"c\">     */</span>","    isBr<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>tagName <span class=\"k\">==</span> <span class=\"s\">'BR'</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#21028;&#26029;&#32473;&#23450;&#30340;&#33410;&#28857;&#26159;&#21542;&#26159;&#19968;&#20010;&#8220;&#22635;&#20805;&#8221;&#33410;&#28857;</span>","<span class=\"c\">     * @method isFillChar</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#21028;&#26029;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @param { Boolean } isInStart &#26159;&#21542;&#20174;&#33410;&#28857;&#20869;&#23481;&#30340;&#24320;&#22987;&#20301;&#32622;&#21305;&#37197;</span>","<span class=\"c\">     * @returns { Boolean } &#33410;&#28857;&#26159;&#21542;&#26159;&#22635;&#20805;&#33410;&#28857;</span>","<span class=\"c\">     */</span>","    isFillChar<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span>isInStart<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">3</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>node<span class=\"k\">.</span>nodeValue<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"k\">new</span> RegExp<span class=\"k\">((</span>isInStart <span class=\"k\">?</span> <span class=\"s\">'^'</span> <span class=\"k\">:</span> <span class=\"s\">''</span> <span class=\"k\">)</span> <span class=\"k\">+</span> domUtils<span class=\"k\">.</span>fillChar<span class=\"k\">),</span> <span class=\"s\">''</span><span class=\"k\">).</span>length","    <span class=\"k\">}</span><span class=\"k\">,</span>","","","    isStartInblock<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>range<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> tmpRange <span class=\"k\">=</span> range<span class=\"k\">.</span>cloneRange<span class=\"k\">(),</span>","            flag <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            start <span class=\"k\">=</span> tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">,</span>","            tmp<span class=\"k\">;</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>start<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> start<span class=\"k\">.</span>childNodes<span class=\"k\">[</span>tmpRange<span class=\"k\">.</span>startOffset<span class=\"k\">])</span><span class=\"k\">{</span>","            start <span class=\"k\">=</span> start<span class=\"k\">.</span>childNodes<span class=\"k\">[</span>tmpRange<span class=\"k\">.</span>startOffset<span class=\"k\">];</span>","            <span class=\"k\">var</span> pre <span class=\"k\">=</span> start<span class=\"k\">.</span>previousSibling<span class=\"k\">;</span>","            <span class=\"k\">while</span><span class=\"k\">(</span>pre <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>isFillChar<span class=\"k\">(</span>pre<span class=\"k\">))</span><span class=\"k\">{</span>","                start <span class=\"k\">=</span> pre<span class=\"k\">;</span>","                pre <span class=\"k\">=</span> pre<span class=\"k\">.</span>previousSibling<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>isFillChar<span class=\"k\">(</span>start<span class=\"k\">,</span><span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> tmpRange<span class=\"k\">.</span>startOffset <span class=\"k\">==</span> <span class=\"s\">1</span><span class=\"k\">)</span><span class=\"k\">{</span>","            tmpRange<span class=\"k\">.</span>setStartBefore<span class=\"k\">(</span>start<span class=\"k\">);</span>","            start <span class=\"k\">=</span> tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">while</span> <span class=\"k\">(</span>start <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>isFillChar<span class=\"k\">(</span>start<span class=\"k\">))</span> <span class=\"k\">{</span>","            tmp <span class=\"k\">=</span> start<span class=\"k\">;</span>","            start <span class=\"k\">=</span> start<span class=\"k\">.</span>previousSibling","        <span class=\"k\">}</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>tmp<span class=\"k\">)</span> <span class=\"k\">{</span>","            tmpRange<span class=\"k\">.</span>setStartBefore<span class=\"k\">(</span>tmp<span class=\"k\">);</span>","            start <span class=\"k\">=</span> tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>start<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>isEmptyNode<span class=\"k\">(</span>start<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> tmpRange<span class=\"k\">.</span>startOffset <span class=\"k\">==</span> <span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","            tmpRange<span class=\"k\">.</span>setStart<span class=\"k\">(</span>start<span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">).</span>collapse<span class=\"k\">(</span><span class=\"k\">true</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">while</span> <span class=\"k\">(!</span>tmpRange<span class=\"k\">.</span>startOffset<span class=\"k\">)</span> <span class=\"k\">{</span>","            start <span class=\"k\">=</span> tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>domUtils<span class=\"k\">.</span>isBlockElm<span class=\"k\">(</span>start<span class=\"k\">)</span> <span class=\"k\">||</span> domUtils<span class=\"k\">.</span>isBody<span class=\"k\">(</span>start<span class=\"k\">))</span> <span class=\"k\">{</span>","                flag <span class=\"k\">=</span> <span class=\"s\">1</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            <span class=\"k\">var</span> pre <span class=\"k\">=</span> tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">.</span>previousSibling<span class=\"k\">,</span>","                tmpNode<span class=\"k\">;</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span>pre<span class=\"k\">)</span> <span class=\"k\">{</span>","                tmpRange<span class=\"k\">.</span>setStartBefore<span class=\"k\">(</span>tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">while</span> <span class=\"k\">(</span>pre <span class=\"k\">&amp;&amp;</span> domUtils<span class=\"k\">.</span>isFillChar<span class=\"k\">(</span>pre<span class=\"k\">))</span> <span class=\"k\">{</span>","                    tmpNode <span class=\"k\">=</span> pre<span class=\"k\">;</span>","                    pre <span class=\"k\">=</span> pre<span class=\"k\">.</span>previousSibling<span class=\"k\">;</span>","                <span class=\"k\">}</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>tmpNode<span class=\"k\">)</span> <span class=\"k\">{</span>","                    tmpRange<span class=\"k\">.</span>setStartBefore<span class=\"k\">(</span>tmpNode<span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    tmpRange<span class=\"k\">.</span>setStartBefore<span class=\"k\">(</span>tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> flag <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>domUtils<span class=\"k\">.</span>isBody<span class=\"k\">(</span>tmpRange<span class=\"k\">.</span>startContainer<span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"s\">1</span> <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\">     * &#21028;&#26029;&#32473;&#23450;&#30340;&#20803;&#32032;&#26159;&#21542;&#26159;&#19968;&#20010;&#31354;&#20803;&#32032;</span>","<span class=\"c\">     * @method isEmptyBlock</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#21028;&#26029;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @return { Boolean } &#26159;&#21542;&#26159;&#31354;&#20803;&#32032;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isEmptyBlock( document.getElementById(\"test\") ) );</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26681;&#25454;&#25351;&#23450;&#30340;&#21028;&#26029;&#35268;&#21017;&#21028;&#26029;&#32473;&#23450;&#30340;&#20803;&#32032;&#26159;&#21542;&#26159;&#19968;&#20010;&#31354;&#20803;&#32032;</span>","<span class=\"c\">     * @method isEmptyBlock</span>","<span class=\"c\">     * @param { Element } node &#38656;&#35201;&#21028;&#26029;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { RegExp } reg &#23545;&#20869;&#23481;&#25191;&#34892;&#21028;&#26029;&#30340;&#27491;&#21017;&#34920;&#36798;&#24335;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#26159;&#21542;&#26159;&#31354;&#20803;&#32032;</span>","<span class=\"c\">     */</span>","    isEmptyBlock<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span>reg<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>node<span class=\"k\">.</span>nodeType <span class=\"k\">!=</span> <span class=\"s\">1</span><span class=\"k\">)</span>","            <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        reg <span class=\"k\">=</span> reg <span class=\"k\">||</span> <span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'[ </span><span class=\"t\">\\t\\r\\n</span><span class=\"s\">'</span> <span class=\"k\">+</span> domUtils<span class=\"k\">.</span>fillChar <span class=\"k\">+</span> <span class=\"s\">']'</span><span class=\"k\">,</span> <span class=\"s\">'g'</span><span class=\"k\">);</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>node<span class=\"k\">[</span>browser<span class=\"k\">.</span>ie <span class=\"k\">?</span> <span class=\"s\">'innerText'</span> <span class=\"k\">:</span> <span class=\"s\">'textContent'</span><span class=\"k\">].</span>replace<span class=\"k\">(</span>reg<span class=\"k\">,</span> <span class=\"s\">''</span><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=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> n <span class=\"k\">in</span> dtd<span class=\"k\">.</span>$isNotEmpty<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>node<span class=\"k\">.</span>getElementsByTagName<span class=\"k\">(</span>n<span class=\"k\">).</span>length<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</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\">     * &#31227;&#21160;&#20803;&#32032;&#20351;&#24471;&#35813;&#20803;&#32032;&#30340;&#20301;&#32622;&#31227;&#21160;&#25351;&#23450;&#30340;&#20559;&#31227;&#37327;&#30340;&#36317;&#31163;</span>","<span class=\"c\">     * @method setViewportOffset</span>","<span class=\"c\">     * @param { Element } element &#38656;&#35201;&#35774;&#32622;&#20559;&#31227;&#37327;&#30340;&#20803;&#32032;</span>","<span class=\"c\">     * @param { KeyValueMap } offset &#20559;&#31227;&#37327;&#65292; &#24418;&#22914;{ left: 100, top: 50 }&#30340;&#19968;&#20010;&#38190;&#20540;&#23545;&#65292; &#34920;&#31034;&#35813;&#20803;&#32032;&#23558;&#22312;</span>","<span class=\"c\">     *                                  &#29616;&#26377;&#30340;&#20301;&#32622;&#19978;&#21521;&#27700;&#24179;&#26041;&#21521;&#20559;&#31227;offset.left&#30340;&#36317;&#31163;&#65292; &#22312;&#31446;&#30452;&#26041;&#21521;&#19978;&#20559;&#31227;</span>","<span class=\"c\">     *                                  offset.top&#30340;&#36317;&#31163;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\" style=\"top: 100px; left: 50px; position: absolute;\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var testNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.setViewportOffset( testNode, {</span>","<span class=\"c\">     *         left: 200,</span>","<span class=\"c\">     *         top: 50</span>","<span class=\"c\">     *     } );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: top: 300px; left: 100px; position: absolute;</span>","<span class=\"c\">     *     console.log( testNode.style.cssText );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    setViewportOffset<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> offset<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> left <span class=\"k\">=</span> parseInt<span class=\"k\">(</span>element<span class=\"k\">.</span>style<span class=\"k\">.</span>left<span class=\"k\">)</span> <span class=\"k\">|</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> top <span class=\"k\">=</span> parseInt<span class=\"k\">(</span>element<span class=\"k\">.</span>style<span class=\"k\">.</span>top<span class=\"k\">)</span> <span class=\"k\">|</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> rect <span class=\"k\">=</span> element<span class=\"k\">.</span>getBoundingClientRect<span class=\"k\">();</span>","        <span class=\"k\">var</span> offsetLeft <span class=\"k\">=</span> offset<span class=\"k\">.</span>left <span class=\"k\">-</span> rect<span class=\"k\">.</span>left<span class=\"k\">;</span>","        <span class=\"k\">var</span> offsetTop <span class=\"k\">=</span> offset<span class=\"k\">.</span>top <span class=\"k\">-</span> rect<span class=\"k\">.</span>top<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>offsetLeft<span class=\"k\">)</span> <span class=\"k\">{</span>","            element<span class=\"k\">.</span>style<span class=\"k\">.</span>left <span class=\"k\">=</span> left <span class=\"k\">+</span> offsetLeft <span class=\"k\">+</span> <span class=\"s\">'px'</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>offsetTop<span class=\"k\">)</span> <span class=\"k\">{</span>","            element<span class=\"k\">.</span>style<span class=\"k\">.</span>top <span class=\"k\">=</span> top <span class=\"k\">+</span> offsetTop <span class=\"k\">+</span> <span class=\"s\">'px'</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#29992;&#8220;&#22635;&#20805;&#23383;&#31526;&#8221;&#22635;&#20805;&#33410;&#28857;</span>","<span class=\"c\">     * @method fillNode</span>","<span class=\"c\">     * @param { DomDocument } doc &#22635;&#20805;&#30340;&#33410;&#28857;&#25152;&#22312;&#30340;docment&#23545;&#35937;</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#22635;&#20805;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *     var testNode = document.getElementById(\"test\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: 0</span>","<span class=\"c\">     *     console.log( testNode.childNodes.length );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.fillNode( document, testNode );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: 1</span>","<span class=\"c\">     *     console.log( testNode.childNodes.length );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    fillNode<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>doc<span class=\"k\">,</span> node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> tmpNode <span class=\"k\">=</span> browser<span class=\"k\">.</span>ie <span class=\"k\">?</span> doc<span class=\"k\">.</span>createTextNode<span class=\"k\">(</span>domUtils<span class=\"k\">.</span>fillChar<span class=\"k\">)</span> <span class=\"k\">:</span> doc<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">'br'</span><span class=\"k\">);</span>","        node<span class=\"k\">.</span>innerHTML <span class=\"k\">=</span> <span class=\"s\">''</span><span class=\"k\">;</span>","        node<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>tmpNode<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#25226;&#33410;&#28857;src&#30340;&#25152;&#26377;&#23376;&#33410;&#28857;&#36861;&#21152;&#21040;&#21478;&#19968;&#20010;&#33410;&#28857;tag&#19978;&#21435;</span>","<span class=\"c\">     * @method moveChild</span>","<span class=\"c\">     * @param { Node } src &#28304;&#33410;&#28857;&#65292; &#35813;&#33410;&#28857;&#19979;&#30340;&#25152;&#26377;&#23376;&#33410;&#28857;&#23558;&#34987;&#31227;&#38500;</span>","<span class=\"c\">     * @param { Node } tag &#30446;&#26631;&#33410;&#28857;&#65292; &#20174;&#28304;&#33410;&#28857;&#31227;&#38500;&#30340;&#23376;&#33410;&#28857;&#23558;&#34987;&#36861;&#21152;&#21040;&#35813;&#33410;&#28857;&#19979;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test1\"&gt;</span>","<span class=\"c\">     *      &lt;span&gt;&lt;/span&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     * &lt;div id=\"test2\"&gt;</span>","<span class=\"c\">     *     &lt;div&gt;&lt;/div&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var test1 = document.getElementById(\"test1\"),</span>","<span class=\"c\">     *         test2 = document.getElementById(\"test2\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.moveChild( test1, test2 );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: \"\"&#65288;&#31354;&#23383;&#31526;&#20018;&#65289;</span>","<span class=\"c\">     *     console.log( test1.innerHTML );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: \"&lt;div&gt;&lt;/div&gt;&lt;span&gt;&lt;/span&gt;\"</span>","<span class=\"c\">     *     console.log( test2.innerHTML );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#25226;&#33410;&#28857;src&#30340;&#25152;&#26377;&#23376;&#33410;&#28857;&#31227;&#21160;&#21040;&#21478;&#19968;&#20010;&#33410;&#28857;tag&#19978;&#21435;, &#21487;&#20197;&#36890;&#36807;dir&#21442;&#25968;&#25511;&#21046;&#38468;&#21152;&#30340;&#34892;&#20026;&#26159;&#8220;&#36861;&#21152;&#8221;&#36824;&#26159;&#8220;&#25554;&#20837;&#39030;&#37096;&#8221;</span>","<span class=\"c\">     * @method moveChild</span>","<span class=\"c\">     * @param { Node } src &#28304;&#33410;&#28857;&#65292; &#35813;&#33410;&#28857;&#19979;&#30340;&#25152;&#26377;&#23376;&#33410;&#28857;&#23558;&#34987;&#31227;&#38500;</span>","<span class=\"c\">     * @param { Node } tag &#30446;&#26631;&#33410;&#28857;&#65292; &#20174;&#28304;&#33410;&#28857;&#31227;&#38500;&#30340;&#23376;&#33410;&#28857;&#23558;&#34987;&#38468;&#21152;&#21040;&#35813;&#33410;&#28857;&#19979;</span>","<span class=\"c\">     * @param { Boolean } dir &#38468;&#21152;&#26041;&#24335;&#65292; &#22914;&#26524;&#20026;true&#65292; &#21017;&#38468;&#21152;&#36827;&#21435;&#30340;&#33410;&#28857;&#23558;&#34987;&#25918;&#21040;&#30446;&#26631;&#33410;&#28857;&#30340;&#39030;&#37096;&#65292; &#21453;&#20043;&#65292;&#21017;&#25918;&#21040;&#26411;&#23614;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test1\"&gt;</span>","<span class=\"c\">     *      &lt;span&gt;&lt;/span&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     * &lt;div id=\"test2\"&gt;</span>","<span class=\"c\">     *     &lt;div&gt;&lt;/div&gt;</span>","<span class=\"c\">     * &lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     var test1 = document.getElementById(\"test1\"),</span>","<span class=\"c\">     *         test2 = document.getElementById(\"test2\");</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     UE.dom.domUtils.moveChild( test1, test2, true );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: \"\"&#65288;&#31354;&#23383;&#31526;&#20018;&#65289;</span>","<span class=\"c\">     *     console.log( test1.innerHTML );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: \"&lt;span&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;\"</span>","<span class=\"c\">     *     console.log( test2.innerHTML );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    moveChild<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>src<span class=\"k\">,</span> tag<span class=\"k\">,</span> dir<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">while</span> <span class=\"k\">(</span>src<span class=\"k\">.</span>firstChild<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>dir <span class=\"k\">&amp;&amp;</span> tag<span class=\"k\">.</span>firstChild<span class=\"k\">)</span> <span class=\"k\">{</span>","                tag<span class=\"k\">.</span>insertBefore<span class=\"k\">(</span>src<span class=\"k\">.</span>lastChild<span class=\"k\">,</span> tag<span class=\"k\">.</span>firstChild<span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                tag<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>src<span class=\"k\">.</span>firstChild<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\">     * &#21028;&#26029;&#33410;&#28857;&#30340;&#26631;&#31614;&#19978;&#26159;&#21542;&#19981;&#23384;&#22312;&#20219;&#20309;&#23646;&#24615;</span>","<span class=\"c\">     * @method hasNoAttributes</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @return { Boolean } &#33410;&#28857;&#26159;&#21542;&#19981;&#21253;&#21547;&#20219;&#20309;&#23646;&#24615;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;&lt;span&gt;xxxx&lt;/span&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: false</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.hasNoAttributes( document.getElementById(\"test\") ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.hasNoAttributes( document.getElementById(\"test\").firstChild ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    hasNoAttributes<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> browser<span class=\"k\">.</span>ie <span class=\"k\">?</span> <span class=\"s\">/^&lt;\\w+\\s*?&gt;/</span><span class=\"k\">.</span>test<span class=\"k\">(</span>node<span class=\"k\">.</span>outerHTML<span class=\"k\">)</span> <span class=\"k\">:</span> node<span class=\"k\">.</span>attributes<span class=\"k\">.</span>length <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\">     * &#26816;&#27979;&#33410;&#28857;&#26159;&#21542;&#26159;UEditor&#25152;&#20351;&#29992;&#30340;&#36741;&#21161;&#33410;&#28857;</span>","<span class=\"c\">     * @method isCustomeNode</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;</span>","<span class=\"c\">     * @remind &#36741;&#21161;&#33410;&#28857;&#26159;&#25351;&#32534;&#36753;&#22120;&#35201;&#23436;&#25104;&#24037;&#20316;&#20020;&#26102;&#28155;&#21152;&#30340;&#33410;&#28857;&#65292; &#22312;&#36755;&#20986;&#30340;&#26102;&#20505;&#23558;&#20250;&#20174;&#32534;&#36753;&#22120;&#20869;&#31227;&#38500;&#65292; &#19981;&#20250;&#24433;&#21709;&#26368;&#32456;&#30340;&#32467;&#26524;&#12290;</span>","<span class=\"c\">     * @return { Boolean } &#32473;&#23450;&#30340;&#33410;&#28857;&#26159;&#21542;&#26159;&#19968;&#20010;&#36741;&#21161;&#33410;&#28857;</span>","<span class=\"c\">     */</span>","    isCustomeNode<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> node<span class=\"k\">.</span>getAttribute<span class=\"k\">(</span><span class=\"s\">'_ue_custom_node_'</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#26816;&#27979;&#33410;&#28857;&#30340;&#26631;&#31614;&#26159;&#21542;&#26159;&#32473;&#23450;&#30340;&#26631;&#31614;</span>","<span class=\"c\">     * @method isTagNode</span>","<span class=\"c\">     * @param { Node } node &#38656;&#35201;&#26816;&#27979;&#30340;&#33410;&#28857;&#23545;&#35937;</span>","<span class=\"c\">     * @param { String } tagName &#26631;&#31614;</span>","<span class=\"c\">     * @return { Boolean } &#33410;&#28857;&#30340;&#26631;&#31614;&#26159;&#21542;&#26159;&#32473;&#23450;&#30340;&#26631;&#31614;</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```html</span>","<span class=\"c\">     * &lt;div id=\"test\"&gt;&lt;/div&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;script&gt;</span>","<span class=\"c\">     *</span>","<span class=\"c\">     *     //output: true</span>","<span class=\"c\">     *     console.log( UE.dom.domUtils.isTagNode( document.getElementById(\"test\"), \"div\" ) );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * &lt;/script&gt;</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    isTagNode<span class=\"k\">:</span><span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span> tagName<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> node<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">'^'</span> <span class=\"k\">+</span> node<span class=\"k\">.</span>tagName <span class=\"k\">+</span> <span class=\"s\">'$'</span><span class=\"k\">,</span><span class=\"s\">'i'</span><span class=\"k\">).</span>test<span class=\"k\">(</span>tagName<span class=\"k\">)</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#32473;&#23450;&#19968;&#20010;&#33410;&#28857;&#25968;&#32452;&#65292;&#22312;&#36890;&#36807;&#25351;&#23450;&#30340;&#36807;&#28388;&#22120;&#36807;&#28388;&#21518;&#65292; &#33719;&#21462;&#20854;&#20013;&#28385;&#36275;&#36807;&#28388;&#26465;&#20214;&#30340;&#31532;&#19968;&#20010;&#33410;&#28857;</span>","<span class=\"c\">     * @method filterNodeList</span>","<span class=\"c\">     * @param { Array } nodeList &#38656;&#35201;&#36807;&#28388;&#30340;&#33410;&#28857;&#25968;&#32452;</span>","<span class=\"c\">     * @param { Function } fn &#36807;&#28388;&#22120;&#65292; &#23545;&#31526;&#21512;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#25191;&#34892;&#32467;&#26524;&#36820;&#22238;true&#65292; &#21453;&#20043;&#21017;&#36820;&#22238;false</span>","<span class=\"c\">     * @return { Node | NULL } &#22914;&#26524;&#25214;&#21040;&#31526;&#21512;&#36807;&#28388;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#21017;&#36820;&#22238;&#35813;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var divNodes = document.getElementsByTagName(\"div\");</span>","<span class=\"c\">     * divNodes = [].slice.call( divNodes, 0 );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: null</span>","<span class=\"c\">     * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {</span>","<span class=\"c\">     *     return node.tagName.toLowerCase() !== 'div';</span>","<span class=\"c\">     * } ) );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#32473;&#23450;&#19968;&#20010;&#33410;&#28857;&#25968;&#32452;nodeList&#21644;&#19968;&#32452;&#26631;&#31614;&#21517;tagNames&#65292; &#33719;&#21462;&#20854;&#20013;&#33021;&#22815;&#21305;&#37197;&#26631;&#31614;&#21517;&#30340;&#33410;&#28857;&#38598;&#21512;&#20013;&#30340;&#31532;&#19968;&#20010;&#33410;&#28857;</span>","<span class=\"c\">     * @method filterNodeList</span>","<span class=\"c\">     * @param { Array } nodeList &#38656;&#35201;&#36807;&#28388;&#30340;&#33410;&#28857;&#25968;&#32452;</span>","<span class=\"c\">     * @param { String } tagNames &#38656;&#35201;&#21305;&#37197;&#30340;&#26631;&#31614;&#21517;&#65292; &#22810;&#20010;&#26631;&#31614;&#21517;&#20043;&#38388;&#29992;&#31354;&#26684;&#20998;&#21106;</span>","<span class=\"c\">     * @return { Node | NULL } &#22914;&#26524;&#25214;&#21040;&#26631;&#31614;&#21517;&#21305;&#37197;&#30340;&#33410;&#28857;&#65292; &#21017;&#36820;&#22238;&#35813;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var divNodes = document.getElementsByTagName(\"div\");</span>","<span class=\"c\">     * divNodes = [].slice.call( divNodes, 0 );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: null</span>","<span class=\"c\">     * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * &#32473;&#23450;&#19968;&#20010;&#33410;&#28857;&#25968;&#32452;&#65292;&#22312;&#36890;&#36807;&#25351;&#23450;&#30340;&#36807;&#28388;&#22120;&#36807;&#28388;&#21518;&#65292; &#22914;&#26524;&#21442;&#25968;forAll&#20026;true&#65292; &#21017;&#20250;&#36820;&#22238;&#25152;&#26377;&#28385;&#36275;&#36807;&#28388;</span>","<span class=\"c\">     * &#26465;&#20214;&#30340;&#33410;&#28857;&#38598;&#21512;&#65292; &#21542;&#21017;&#65292; &#36820;&#22238;&#28385;&#36275;&#26465;&#20214;&#30340;&#33410;&#28857;&#38598;&#21512;&#20013;&#30340;&#31532;&#19968;&#20010;&#33410;&#28857;</span>","<span class=\"c\">     * @method filterNodeList</span>","<span class=\"c\">     * @param { Array } nodeList &#38656;&#35201;&#36807;&#28388;&#30340;&#33410;&#28857;&#25968;&#32452;</span>","<span class=\"c\">     * @param { Function } fn &#36807;&#28388;&#22120;&#65292; &#23545;&#31526;&#21512;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#25191;&#34892;&#32467;&#26524;&#36820;&#22238;true&#65292; &#21453;&#20043;&#21017;&#36820;&#22238;false</span>","<span class=\"c\">     * @param { Boolean } forAll &#26159;&#21542;&#36820;&#22238;&#25972;&#20010;&#33410;&#28857;&#25968;&#32452;, &#22914;&#26524;&#35813;&#21442;&#25968;&#20026;false&#65292; &#21017;&#36820;&#22238;&#33410;&#28857;&#38598;&#21512;&#20013;&#30340;&#31532;&#19968;&#20010;&#33410;&#28857;</span>","<span class=\"c\">     * @return { Array | Node | NULL } &#22914;&#26524;&#25214;&#21040;&#31526;&#21512;&#36807;&#28388;&#26465;&#20214;&#30340;&#33410;&#28857;&#65292; &#21017;&#26681;&#25454;&#21442;&#25968;forAll&#30340;&#20540;&#20915;&#23450;&#36820;&#22238;&#28385;&#36275;</span>","<span class=\"c\">     *                                      &#36807;&#28388;&#26465;&#20214;&#30340;&#33410;&#28857;&#25968;&#32452;&#25110;&#31532;&#19968;&#20010;&#33410;&#28857;&#65292; &#21542;&#21017;&#36820;&#22238;NULL</span>","<span class=\"c\">     * @example</span>","<span class=\"c\">     * ```javascript</span>","<span class=\"c\">     * var divNodes = document.getElementsByTagName(\"div\");</span>","<span class=\"c\">     * divNodes = [].slice.call( divNodes, 0 );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: 3&#65288;&#20551;&#23450;&#26377;3&#20010;div&#65289;</span>","<span class=\"c\">     * console.log( divNodes.length );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {</span>","<span class=\"c\">     *     return node.tagName.toLowerCase() === 'div';</span>","<span class=\"c\">     * }, true );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: 3</span>","<span class=\"c\">     * console.log( nodes.length );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {</span>","<span class=\"c\">     *     return node.tagName.toLowerCase() === 'div';</span>","<span class=\"c\">     * }, false );</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * //output: div</span>","<span class=\"c\">     * console.log( node.nodeName );</span>","<span class=\"c\">     * ```</span>","<span class=\"c\">     */</span>","    filterNodeList <span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>nodelist<span class=\"k\">,</span>filter<span class=\"k\">,</span>forAll<span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">var</span> results <span class=\"k\">=</span> <span class=\"k\">[];</span>","        <span class=\"k\">if</span><span class=\"k\">(!</span>utils <span class=\"k\">.</span>isFunction<span class=\"k\">(</span>filter<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> str <span class=\"k\">=</span> filter<span class=\"k\">;</span>","            filter <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\">return</span> utils<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>utils<span class=\"k\">.</span>isArray<span class=\"k\">(</span>str<span class=\"k\">)</span> <span class=\"k\">?</span> str<span class=\"k\">:</span>str<span class=\"k\">.</span>split<span class=\"k\">(</span><span class=\"s\">' '</span><span class=\"k\">),</span> n<span class=\"k\">.</span>tagName<span class=\"k\">.</span>toLowerCase<span class=\"k\">())</span> <span class=\"k\">!=</span> <span class=\"k\">-</span><span class=\"s\">1</span>","            <span class=\"k\">}</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        utils<span class=\"k\">.</span>each<span class=\"k\">(</span>nodelist<span class=\"k\">,</span><span class=\"k\">function</span><span class=\"k\">(</span>n<span class=\"k\">)</span><span class=\"k\">{</span>","            filter<span class=\"k\">(</span>n<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> results<span class=\"k\">.</span>push<span class=\"k\">(</span>n<span class=\"k\">)</span>","        <span class=\"k\">}</span><span class=\"k\">);</span>","        <span class=\"k\">return</span> results<span class=\"k\">.</span>length  <span class=\"k\">==</span> <span class=\"s\">0</span> <span class=\"k\">?</span> <span class=\"k\">null</span> <span class=\"k\">:</span> results<span class=\"k\">.</span>length <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">||</span> <span class=\"k\">!</span>forAll <span class=\"k\">?</span> results<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">]</span> <span class=\"k\">:</span> results","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    isInNodeEndBoundary <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>rng<span class=\"k\">,</span>node<span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">var</span> start <span class=\"k\">=</span> rng<span class=\"k\">.</span>startContainer<span class=\"k\">;</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>start<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">3</span> <span class=\"k\">&amp;&amp;</span> rng<span class=\"k\">.</span>startOffset <span class=\"k\">!=</span> start<span class=\"k\">.</span>nodeValue<span class=\"k\">.</span>length<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">if</span><span class=\"k\">(</span>start<span class=\"k\">.</span>nodeType <span class=\"k\">==</span> <span class=\"s\">1</span> <span class=\"k\">&amp;&amp;</span> rng<span class=\"k\">.</span>startOffset <span class=\"k\">!=</span> start<span class=\"k\">.</span>childNodes<span class=\"k\">.</span>length<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">return</span> <span class=\"s\">0</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">while</span><span class=\"k\">(</span>start <span class=\"k\">!==</span> node<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span><span class=\"k\">(</span>start<span class=\"k\">.</span>nextSibling<span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"s\">0</span>","            <span class=\"k\">}</span><span class=\"k\">;</span>","            start <span class=\"k\">=</span> start<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> <span class=\"s\">1</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    isBoundaryNode <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>node<span class=\"k\">,</span>dir<span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">var</span> tmp<span class=\"k\">;</span>","        <span class=\"k\">while</span><span class=\"k\">(!</span>domUtils<span class=\"k\">.</span>isBody<span class=\"k\">(</span>node<span class=\"k\">))</span><span class=\"k\">{</span>","            tmp <span class=\"k\">=</span> node<span class=\"k\">;</span>","            node <span class=\"k\">=</span> node<span class=\"k\">.</span>parentNode<span class=\"k\">;</span>","            <span class=\"k\">if</span><span class=\"k\">(</span>tmp <span class=\"k\">!==</span> node<span class=\"k\">[</span>dir<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\">return</span> <span class=\"k\">true</span><span class=\"k\">;</span>","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","<span class=\"k\">var</span> fillCharReg <span class=\"k\">=</span> <span class=\"k\">new</span> RegExp<span class=\"k\">(</span>domUtils<span class=\"k\">.</span>fillChar<span class=\"k\">,</span> <span class=\"s\">'g'</span><span class=\"k\">);</span>"];
_$jscoverage['core/domUtils.js'][15]++;
function getNode(node, start, ltr, startFromChild, fn, guard) {
  _$jscoverage['core/domUtils.js'][16]++;
  var tmpNode = (startFromChild && node[start]), parent;
  _$jscoverage['core/domUtils.js'][18]++;
  ((! tmpNode) && (tmpNode = node[ltr]));
  _$jscoverage['core/domUtils.js'][19]++;
  while (((! tmpNode) && (parent = (parent || node).parentNode))) {
    _$jscoverage['core/domUtils.js'][20]++;
    if (((parent.tagName == "BODY") || (guard && (! guard(parent))))) {
      _$jscoverage['core/domUtils.js'][21]++;
      return null;
    }
    _$jscoverage['core/domUtils.js'][23]++;
    tmpNode = parent[ltr];
}
  _$jscoverage['core/domUtils.js'][25]++;
  if ((tmpNode && fn && (! fn(tmpNode)))) {
    _$jscoverage['core/domUtils.js'][26]++;
    return getNode(tmpNode, start, ltr, false, fn);
  }
  _$jscoverage['core/domUtils.js'][28]++;
  return tmpNode;
}
_$jscoverage['core/domUtils.js'][30]++;
var attrFix = ((ie && (browser.version < 9))? {tabindex: "tabIndex", readonly: "readOnly", "for": "htmlFor", "class": "className", maxlength: "maxLength", cellspacing: "cellSpacing", cellpadding: "cellPadding", rowspan: "rowSpan", colspan: "colSpan", usemap: "useMap", frameborder: "frameBorder"}: {tabindex: "tabIndex", readonly: "readOnly"}), styleBlock = utils.listToMap(["-webkit-box", "-moz-box", "block", "list-item", "table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption"]);
_$jscoverage['core/domUtils.js'][53]++;
var domUtils = (dom.domUtils = {NODE_ELEMENT: 1, NODE_DOCUMENT: 9, NODE_TEXT: 3, NODE_COMMENT: 8, NODE_DOCUMENT_FRAGMENT: 11, POSITION_IDENTICAL: 0, POSITION_DISCONNECTED: 1, POSITION_FOLLOWING: 2, POSITION_PRECEDING: 4, POSITION_IS_CONTAINED: 8, POSITION_CONTAINS: 16, fillChar: ((ie && (browser.version == "6"))? "\ufeff": "\u200b"), keys: {8: 1, 46: 1, 16: 1, 17: 1, 18: 1, 37: 1, 38: 1, 39: 1, 40: 1, 13: 1}, getPosition: (function (nodeA, nodeB) {
  _$jscoverage['core/domUtils.js'][120]++;
  if ((nodeA === nodeB)) {
    _$jscoverage['core/domUtils.js'][122]++;
    return 0;
  }
  _$jscoverage['core/domUtils.js'][124]++;
  var node, parentsA = [nodeA], parentsB = [nodeB];
  _$jscoverage['core/domUtils.js'][127]++;
  node = nodeA;
  _$jscoverage['core/domUtils.js'][128]++;
  while ((node = node.parentNode)) {
    _$jscoverage['core/domUtils.js'][130]++;
    if ((node === nodeB)) {
      _$jscoverage['core/domUtils.js'][132]++;
      return 10;
    }
    _$jscoverage['core/domUtils.js'][134]++;
    parentsA.push(node);
}
  _$jscoverage['core/domUtils.js'][136]++;
  node = nodeB;
  _$jscoverage['core/domUtils.js'][137]++;
  while ((node = node.parentNode)) {
    _$jscoverage['core/domUtils.js'][139]++;
    if ((node === nodeA)) {
      _$jscoverage['core/domUtils.js'][141]++;
      return 20;
    }
    _$jscoverage['core/domUtils.js'][143]++;
    parentsB.push(node);
}
  _$jscoverage['core/domUtils.js'][145]++;
  parentsA.reverse();
  _$jscoverage['core/domUtils.js'][146]++;
  parentsB.reverse();
  _$jscoverage['core/domUtils.js'][147]++;
  if ((parentsA[0] !== parentsB[0])) {
    _$jscoverage['core/domUtils.js'][149]++;
    return 1;
  }
  _$jscoverage['core/domUtils.js'][151]++;
  var i = -1;
  _$jscoverage['core/domUtils.js'][152]++;
  while (((i++), (parentsA[i] === parentsB[i]))) {
}
  _$jscoverage['core/domUtils.js'][154]++;
  nodeA = parentsA[i];
  _$jscoverage['core/domUtils.js'][155]++;
  nodeB = parentsB[i];
  _$jscoverage['core/domUtils.js'][156]++;
  while ((nodeA = nodeA.nextSibling)) {
    _$jscoverage['core/domUtils.js'][157]++;
    if ((nodeA === nodeB)) {
      _$jscoverage['core/domUtils.js'][159]++;
      return 4;
    }
}
  _$jscoverage['core/domUtils.js'][163]++;
  return 2;
}), getNodeIndex: (function (node, ignoreTextNode) {
  _$jscoverage['core/domUtils.js'][181]++;
  var preNode = node, i = 0;
  _$jscoverage['core/domUtils.js'][183]++;
  while ((preNode = preNode.previousSibling)) {
    _$jscoverage['core/domUtils.js'][184]++;
    if ((ignoreTextNode && (preNode.nodeType == 3))) {
      _$jscoverage['core/domUtils.js'][185]++;
      if ((preNode.nodeType != preNode.nextSibling.nodeType)) {
        _$jscoverage['core/domUtils.js'][186]++;
        (i++);
      }
      _$jscoverage['core/domUtils.js'][188]++;
      continue;
    }
    _$jscoverage['core/domUtils.js'][190]++;
    (i++);
}
  _$jscoverage['core/domUtils.js'][192]++;
  return i;
}), inDoc: (function (node, doc) {
  _$jscoverage['core/domUtils.js'][217]++;
  return (domUtils.getPosition(node, doc) == 10);
}), findParent: (function (node, filterFn, includeSelf) {
  _$jscoverage['core/domUtils.js'][279]++;
  if ((node && (! domUtils.isBody(node)))) {
    _$jscoverage['core/domUtils.js'][280]++;
    node = (includeSelf? node: node.parentNode);
    _$jscoverage['core/domUtils.js'][281]++;
    while (node) {
      _$jscoverage['core/domUtils.js'][282]++;
      if (((! filterFn) || filterFn(node) || domUtils.isBody(node))) {
        _$jscoverage['core/domUtils.js'][283]++;
        return ((filterFn && (! filterFn(node)) && domUtils.isBody(node))? null: node);
      }
      _$jscoverage['core/domUtils.js'][285]++;
      node = node.parentNode;
}
  }
  _$jscoverage['core/domUtils.js'][288]++;
  return null;
}), findParentByTagName: (function (node, tagNames, includeSelf, excludeFn) {
  _$jscoverage['core/domUtils.js'][350]++;
  tagNames = utils.listToMap((utils.isArray(tagNames)? tagNames: [tagNames]));
  _$jscoverage['core/domUtils.js'][351]++;
  return domUtils.findParent(node, (function (node) {
  _$jscoverage['core/domUtils.js'][352]++;
  return (tagNames[node.tagName] && (! (excludeFn && excludeFn(node))));
}), includeSelf);
}), findParents: (function (node, includeSelf, filterFn, closerFirst) {
  _$jscoverage['core/domUtils.js'][365]++;
  var parents = ((includeSelf && ((filterFn && filterFn(node)) || (! filterFn)))? [node]: []);
  _$jscoverage['core/domUtils.js'][366]++;
  while ((node = domUtils.findParent(node, filterFn))) {
    _$jscoverage['core/domUtils.js'][367]++;
    parents.push(node);
}
  _$jscoverage['core/domUtils.js'][369]++;
  return (closerFirst? parents: parents.reverse());
}), insertAfter: (function (node, newNode) {
  _$jscoverage['core/domUtils.js'][380]++;
  return node.parentNode.insertBefore(newNode, node.nextSibling);
}), remove: (function (node, keepChildren) {
  _$jscoverage['core/domUtils.js'][420]++;
  var parent = node.parentNode, child;
  _$jscoverage['core/domUtils.js'][422]++;
  if (parent) {
    _$jscoverage['core/domUtils.js'][423]++;
    if ((keepChildren && node.hasChildNodes())) {
      _$jscoverage['core/domUtils.js'][424]++;
      while ((child = node.firstChild)) {
        _$jscoverage['core/domUtils.js'][425]++;
        parent.insertBefore(child, node);
}
    }
    _$jscoverage['core/domUtils.js'][428]++;
    parent.removeChild(node);
  }
  _$jscoverage['core/domUtils.js'][430]++;
  return node;
}), getNextNode: (function (node, startFromChild, filterFn, guard) {
  _$jscoverage['core/domUtils.js'][437]++;
  return getNode(node, "firstChild", "nextSibling", startFromChild, filterFn, guard);
}), isBookmarkNode: (function (node) {
  _$jscoverage['core/domUtils.js'][456]++;
  return ((node.nodeType == 1) && node.id && /^_baidu_bookmark_/i.test(node.id));
}), getWindow: (function (node) {
  _$jscoverage['core/domUtils.js'][471]++;
  var doc = (node.ownerDocument || node);
  _$jscoverage['core/domUtils.js'][472]++;
  return (doc.defaultView || doc.parentWindow);
}), getCommonAncestor: (function (nodeA, nodeB) {
  _$jscoverage['core/domUtils.js'][490]++;
  if ((nodeA === nodeB)) {
    _$jscoverage['core/domUtils.js'][491]++;
    return nodeA;
  }
  _$jscoverage['core/domUtils.js'][492]++;
  var parentsA = [nodeA], parentsB = [nodeB], parent = nodeA, i = -1;
  _$jscoverage['core/domUtils.js'][493]++;
  while ((parent = parent.parentNode)) {
    _$jscoverage['core/domUtils.js'][494]++;
    if ((parent === nodeB)) {
      _$jscoverage['core/domUtils.js'][495]++;
      return parent;
    }
    _$jscoverage['core/domUtils.js'][497]++;
    parentsA.push(parent);
}
  _$jscoverage['core/domUtils.js'][499]++;
  parent = nodeB;
  _$jscoverage['core/domUtils.js'][500]++;
  while ((parent = parent.parentNode)) {
    _$jscoverage['core/domUtils.js'][501]++;
    if ((parent === nodeA)) {
      _$jscoverage['core/domUtils.js'][502]++;
      return parent;
    }
    _$jscoverage['core/domUtils.js'][503]++;
    parentsB.push(parent);
}
  _$jscoverage['core/domUtils.js'][505]++;
  parentsA.reverse();
  _$jscoverage['core/domUtils.js'][506]++;
  parentsB.reverse();
  _$jscoverage['core/domUtils.js'][507]++;
  while (((i++), (parentsA[i] === parentsB[i]))) {
}
  _$jscoverage['core/domUtils.js'][509]++;
  return ((i == 0)? null: parentsA[(i - 1)]);
}), clearEmptySibling: (function (node, ignoreNext, ignorePre) {
  _$jscoverage['core/domUtils.js'][523]++;
  function clear(next, dir) {
    _$jscoverage['core/domUtils.js'][524]++;
    var tmpNode;
    _$jscoverage['core/domUtils.js'][525]++;
    while ((next && (! domUtils.isBookmarkNode(next)) && (domUtils.isEmptyInlineElement(next) || (! new RegExp(("[^\t\n\r" + domUtils.fillChar + "]")).test(next.nodeValue))))) {
      _$jscoverage['core/domUtils.js'][528]++;
      tmpNode = next[dir];
      _$jscoverage['core/domUtils.js'][529]++;
      domUtils.remove(next);
      _$jscoverage['core/domUtils.js'][530]++;
      next = tmpNode;
}
}
  _$jscoverage['core/domUtils.js'][533]++;
  ((! ignoreNext) && clear(node.nextSibling, "nextSibling"));
  _$jscoverage['core/domUtils.js'][534]++;
  ((! ignorePre) && clear(node.previousSibling, "previousSibling"));
}), split: (function (node, offset) {
  _$jscoverage['core/domUtils.js'][554]++;
  var doc = node.ownerDocument;
  _$jscoverage['core/domUtils.js'][555]++;
  if ((browser.ie && (offset == node.nodeValue.length))) {
    _$jscoverage['core/domUtils.js'][556]++;
    var next = doc.createTextNode("");
    _$jscoverage['core/domUtils.js'][557]++;
    return domUtils.insertAfter(node, next);
  }
  _$jscoverage['core/domUtils.js'][559]++;
  var retval = node.splitText(offset);
  _$jscoverage['core/domUtils.js'][561]++;
  if (browser.ie8) {
    _$jscoverage['core/domUtils.js'][562]++;
    var tmpNode = doc.createTextNode("");
    _$jscoverage['core/domUtils.js'][563]++;
    domUtils.insertAfter(retval, tmpNode);
    _$jscoverage['core/domUtils.js'][564]++;
    domUtils.remove(tmpNode);
  }
  _$jscoverage['core/domUtils.js'][566]++;
  return retval;
}), isWhitespace: (function (node) {
  _$jscoverage['core/domUtils.js'][586]++;
  return (! new RegExp(("[^ \t\n\r" + domUtils.fillChar + "]")).test(node.nodeValue));
}), getXY: (function (element) {
  _$jscoverage['core/domUtils.js'][604]++;
  var x = 0, y = 0;
  _$jscoverage['core/domUtils.js'][605]++;
  while (element.offsetParent) {
    _$jscoverage['core/domUtils.js'][606]++;
    y += element.offsetTop;
    _$jscoverage['core/domUtils.js'][607]++;
    x += element.offsetLeft;
    _$jscoverage['core/domUtils.js'][608]++;
    element = element.offsetParent;
}
  _$jscoverage['core/domUtils.js'][610]++;
  return ({"x": x, "y": y});
}), on: (function (element, type, handler) {
  _$jscoverage['core/domUtils.js'][641]++;
  var types = (utils.isArray(type)? type: [type]), k = types.length;
  _$jscoverage['core/domUtils.js'][643]++;
  if (k) {
    _$jscoverage['core/domUtils.js'][643]++;
    while ((k--)) {
      _$jscoverage['core/domUtils.js'][644]++;
      type = types[k];
      _$jscoverage['core/domUtils.js'][645]++;
      if (element.addEventListener) {
        _$jscoverage['core/domUtils.js'][646]++;
        element.addEventListener(type, handler, false);
      }
      else {
        _$jscoverage['core/domUtils.js'][648]++;
        if ((! handler._d)) {
          _$jscoverage['core/domUtils.js'][649]++;
          handler._d = {els: []};
        }
        _$jscoverage['core/domUtils.js'][653]++;
        var key = (type + handler.toString()), index = utils.indexOf(handler._d.els, element);
        _$jscoverage['core/domUtils.js'][654]++;
        if (((! handler._d[key]) || (index == -1))) {
          _$jscoverage['core/domUtils.js'][655]++;
          if ((index == -1)) {
            _$jscoverage['core/domUtils.js'][656]++;
            handler._d.els.push(element);
          }
          _$jscoverage['core/domUtils.js'][658]++;
          if ((! handler._d[key])) {
            _$jscoverage['core/domUtils.js'][659]++;
            handler._d[key] = (function (evt) {
  _$jscoverage['core/domUtils.js'][660]++;
  return handler.call(evt.srcElement, (evt || window.event));
});
          }
          _$jscoverage['core/domUtils.js'][665]++;
          element.attachEvent(("on" + type), handler._d[key]);
        }
      }
}
  }
  _$jscoverage['core/domUtils.js'][669]++;
  element = null;
}), un: (function (element, type, handler) {
  _$jscoverage['core/domUtils.js'][700]++;
  var types = (utils.isArray(type)? type: [type]), k = types.length;
  _$jscoverage['core/domUtils.js'][702]++;
  if (k) {
    _$jscoverage['core/domUtils.js'][702]++;
    while ((k--)) {
      _$jscoverage['core/domUtils.js'][703]++;
      type = types[k];
      _$jscoverage['core/domUtils.js'][704]++;
      if (element.removeEventListener) {
        _$jscoverage['core/domUtils.js'][705]++;
        element.removeEventListener(type, handler, false);
      }
      else {
        _$jscoverage['core/domUtils.js'][707]++;
        var key = (type + handler.toString());
        _$jscoverage['core/domUtils.js'][708]++;
        try {
          _$jscoverage['core/domUtils.js'][709]++;
          element.detachEvent(("on" + type), (handler._d? handler._d[key]: handler));
        }
        catch (e) {
        }
        _$jscoverage['core/domUtils.js'][711]++;
        if ((handler._d && handler._d[key])) {
          _$jscoverage['core/domUtils.js'][712]++;
          var index = utils.indexOf(handler._d.els, element);
          _$jscoverage['core/domUtils.js'][713]++;
          if ((index != -1)) {
            _$jscoverage['core/domUtils.js'][714]++;
            handler._d.els.splice(index, 1);
          }
          _$jscoverage['core/domUtils.js'][716]++;
          ((handler._d.els.length == 0) && (delete handler._d[key]));
        }
      }
}
  }
}), isSameElement: (function (nodeA, nodeB) {
  _$jscoverage['core/domUtils.js'][749]++;
  if ((nodeA.tagName != nodeB.tagName)) {
    _$jscoverage['core/domUtils.js'][750]++;
    return false;
  }
  _$jscoverage['core/domUtils.js'][752]++;
  var thisAttrs = nodeA.attributes, otherAttrs = nodeB.attributes;
  _$jscoverage['core/domUtils.js'][754]++;
  if (((! ie) && (thisAttrs.length != otherAttrs.length))) {
    _$jscoverage['core/domUtils.js'][755]++;
    return false;
  }
  _$jscoverage['core/domUtils.js'][757]++;
  var attrA, attrB, al = 0, bl = 0;
  _$jscoverage['core/domUtils.js'][758]++;
  for (var i = 0; (attrA = thisAttrs[(i++)]);) {
    _$jscoverage['core/domUtils.js'][759]++;
    if ((attrA.nodeName == "style")) {
      _$jscoverage['core/domUtils.js'][760]++;
      if (attrA.specified) {
        _$jscoverage['core/domUtils.js'][761]++;
        (al++);
      }
      _$jscoverage['core/domUtils.js'][763]++;
      if (domUtils.isSameStyle(nodeA, nodeB)) {
        _$jscoverage['core/domUtils.js'][764]++;
        continue;
      }
      else {
        _$jscoverage['core/domUtils.js'][766]++;
        return false;
      }
    }
    _$jscoverage['core/domUtils.js'][769]++;
    if (ie) {
      _$jscoverage['core/domUtils.js'][770]++;
      if (attrA.specified) {
        _$jscoverage['core/domUtils.js'][771]++;
        (al++);
        _$jscoverage['core/domUtils.js'][772]++;
        attrB = otherAttrs.getNamedItem(attrA.nodeName);
      }
      else {
        _$jscoverage['core/domUtils.js'][774]++;
        continue;
      }
    }
    else {
      _$jscoverage['core/domUtils.js'][777]++;
      attrB = nodeB.attributes[attrA.nodeName];
    }
    _$jscoverage['core/domUtils.js'][779]++;
    if (((! attrB.specified) || (attrA.nodeValue != attrB.nodeValue))) {
      _$jscoverage['core/domUtils.js'][780]++;
      return false;
    }
}
  _$jscoverage['core/domUtils.js'][784]++;
  if (ie) {
    _$jscoverage['core/domUtils.js'][785]++;
    for (i = 0; (attrB = otherAttrs[(i++)]);) {
      _$jscoverage['core/domUtils.js'][786]++;
      if (attrB.specified) {
        _$jscoverage['core/domUtils.js'][787]++;
        (bl++);
      }
}
    _$jscoverage['core/domUtils.js'][790]++;
    if ((al != bl)) {
      _$jscoverage['core/domUtils.js'][791]++;
      return false;
    }
  }
  _$jscoverage['core/domUtils.js'][794]++;
  return true;
}), isSameStyle: (function (nodeA, nodeB) {
  _$jscoverage['core/domUtils.js'][824]++;
  var styleA = nodeA.style.cssText.replace(/( ?; ?)/g, ";").replace(/( ?: ?)/g, ":"), styleB = nodeB.style.cssText.replace(/( ?; ?)/g, ";").replace(/( ?: ?)/g, ":");
  _$jscoverage['core/domUtils.js'][826]++;
  if (browser.opera) {
    _$jscoverage['core/domUtils.js'][827]++;
    styleA = nodeA.style;
    _$jscoverage['core/domUtils.js'][828]++;
    styleB = nodeB.style;
    _$jscoverage['core/domUtils.js'][829]++;
    if ((styleA.length != styleB.length)) {
      _$jscoverage['core/domUtils.js'][830]++;
      return false;
    }
    _$jscoverage['core/domUtils.js'][831]++;
    for (var p in styleA) {
      _$jscoverage['core/domUtils.js'][832]++;
      if (/^(\d+|csstext)$/i.test(p)) {
        _$jscoverage['core/domUtils.js'][833]++;
        continue;
      }
      _$jscoverage['core/domUtils.js'][835]++;
      if ((styleA[p] != styleB[p])) {
        _$jscoverage['core/domUtils.js'][836]++;
        return false;
      }
}
    _$jscoverage['core/domUtils.js'][839]++;
    return true;
  }
  _$jscoverage['core/domUtils.js'][841]++;
  if (((! styleA) || (! styleB))) {
    _$jscoverage['core/domUtils.js'][842]++;
    return (styleA == styleB);
  }
  _$jscoverage['core/domUtils.js'][844]++;
  styleA = styleA.split(";");
  _$jscoverage['core/domUtils.js'][845]++;
  styleB = styleB.split(";");
  _$jscoverage['core/domUtils.js'][846]++;
  if ((styleA.length != styleB.length)) {
    _$jscoverage['core/domUtils.js'][847]++;
    return false;
  }
  _$jscoverage['core/domUtils.js'][849]++;
  for (var i = 0, ci; (ci = styleA[(i++)]);) {
    _$jscoverage['core/domUtils.js'][850]++;
    if ((utils.indexOf(styleB, ci) == -1)) {
      _$jscoverage['core/domUtils.js'][851]++;
      return false;
    }
}
  _$jscoverage['core/domUtils.js'][854]++;
  return true;
}), isBlockElm: (function (node) {
  _$jscoverage['core/domUtils.js'][885]++;
  return ((node.nodeType == 1) && (dtd.$block[node.tagName] || styleBlock[domUtils.getComputedStyle(node, "display")]) && (! dtd.$nonChild[node.tagName]));
}), isBody: (function (node) {
  _$jscoverage['core/domUtils.js'][900]++;
  return (node && (node.nodeType == 1) && (node.tagName.toLowerCase() == "body"));
}), breakParent: (function (node, parent) {
  _$jscoverage['core/domUtils.js'][913]++;
  var tmpNode, parentClone = node, clone = node, leftNodes, rightNodes;
  _$jscoverage['core/domUtils.js'][918]++;
  do {
    _$jscoverage['core/domUtils.js'][919]++;
    parentClone = parentClone.parentNode;
    _$jscoverage['core/domUtils.js'][920]++;
    if (leftNodes) {
      _$jscoverage['core/domUtils.js'][921]++;
      tmpNode = parentClone.cloneNode(false);
      _$jscoverage['core/domUtils.js'][922]++;
      tmpNode.appendChild(leftNodes);
      _$jscoverage['core/domUtils.js'][923]++;
      leftNodes = tmpNode;
      _$jscoverage['core/domUtils.js'][924]++;
      tmpNode = parentClone.cloneNode(false);
      _$jscoverage['core/domUtils.js'][925]++;
      tmpNode.appendChild(rightNodes);
      _$jscoverage['core/domUtils.js'][926]++;
      rightNodes = tmpNode;
    }
    else {
      _$jscoverage['core/domUtils.js'][928]++;
      leftNodes = parentClone.cloneNode(false);
      _$jscoverage['core/domUtils.js'][929]++;
      rightNodes = leftNodes.cloneNode(false);
    }
    _$jscoverage['core/domUtils.js'][931]++;
    while ((tmpNode = clone.previousSibling)) {
      _$jscoverage['core/domUtils.js'][932]++;
      leftNodes.insertBefore(tmpNode, leftNodes.firstChild);
}
    _$jscoverage['core/domUtils.js'][934]++;
    while ((tmpNode = clone.nextSibling)) {
      _$jscoverage['core/domUtils.js'][935]++;
      rightNodes.appendChild(tmpNode);
}
    _$jscoverage['core/domUtils.js'][937]++;
    clone = parentClone;
}
  while ((parent !== parentClone));
  _$jscoverage['core/domUtils.js'][939]++;
  tmpNode = parent.parentNode;
  _$jscoverage['core/domUtils.js'][940]++;
  tmpNode.insertBefore(leftNodes, parent);
  _$jscoverage['core/domUtils.js'][941]++;
  tmpNode.insertBefore(rightNodes, parent);
  _$jscoverage['core/domUtils.js'][942]++;
  tmpNode.insertBefore(node, rightNodes);
  _$jscoverage['core/domUtils.js'][943]++;
  domUtils.remove(parent);
  _$jscoverage['core/domUtils.js'][944]++;
  return node;
}), isEmptyInlineElement: (function (node) {
  _$jscoverage['core/domUtils.js'][958]++;
  if (((node.nodeType != 1) || (! dtd.$removeEmpty[node.tagName]))) {
    _$jscoverage['core/domUtils.js'][959]++;
    return 0;
  }
  _$jscoverage['core/domUtils.js'][961]++;
  node = node.firstChild;
  _$jscoverage['core/domUtils.js'][962]++;
  while (node) {
    _$jscoverage['core/domUtils.js'][964]++;
    if (domUtils.isBookmarkNode(node)) {
      _$jscoverage['core/domUtils.js'][965]++;
      return 0;
    }
    _$jscoverage['core/domUtils.js'][967]++;
    if ((((node.nodeType == 1) && (! domUtils.isEmptyInlineElement(node))) || ((node.nodeType == 3) && (! domUtils.isWhitespace(node))))) {
      _$jscoverage['core/domUtils.js'][970]++;
      return 0;
    }
    _$jscoverage['core/domUtils.js'][972]++;
    node = node.nextSibling;
}
  _$jscoverage['core/domUtils.js'][974]++;
  return 1;
}), trimWhiteTextNode: (function (node) {
  _$jscoverage['core/domUtils.js'][1000]++;
  function remove(dir) {
    _$jscoverage['core/domUtils.js'][1001]++;
    var child;
    _$jscoverage['core/domUtils.js'][1002]++;
    while (((child = node[dir]) && (child.nodeType == 3) && domUtils.isWhitespace(child))) {
      _$jscoverage['core/domUtils.js'][1003]++;
      node.removeChild(child);
}
}
  _$jscoverage['core/domUtils.js'][1006]++;
  remove("firstChild");
  _$jscoverage['core/domUtils.js'][1007]++;
  remove("lastChild");
}), mergeChild: (function (node, tagName, attrs) {
  _$jscoverage['core/domUtils.js'][1019]++;
  var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase());
  _$jscoverage['core/domUtils.js'][1020]++;
  for (var i = 0, ci; (ci = list[(i++)]);) {
    _$jscoverage['core/domUtils.js'][1021]++;
    if (((! ci.parentNode) || domUtils.isBookmarkNode(ci))) {
      _$jscoverage['core/domUtils.js'][1022]++;
      continue;
    }
    _$jscoverage['core/domUtils.js'][1025]++;
    if ((ci.tagName.toLowerCase() == "span")) {
      _$jscoverage['core/domUtils.js'][1026]++;
      if ((node === ci.parentNode)) {
        _$jscoverage['core/domUtils.js'][1027]++;
        domUtils.trimWhiteTextNode(node);
        _$jscoverage['core/domUtils.js'][1028]++;
        if ((node.childNodes.length == 1)) {
          _$jscoverage['core/domUtils.js'][1029]++;
          node.style.cssText = (ci.style.cssText + ";" + node.style.cssText);
          _$jscoverage['core/domUtils.js'][1030]++;
          domUtils.remove(ci, true);
          _$jscoverage['core/domUtils.js'][1031]++;
          continue;
        }
      }
      _$jscoverage['core/domUtils.js'][1034]++;
      ci.style.cssText = (node.style.cssText + ";" + ci.style.cssText);
      _$jscoverage['core/domUtils.js'][1035]++;
      if (attrs) {
        _$jscoverage['core/domUtils.js'][1036]++;
        var style = attrs.style;
        _$jscoverage['core/domUtils.js'][1037]++;
        if (style) {
          _$jscoverage['core/domUtils.js'][1038]++;
          style = style.split(";");
          _$jscoverage['core/domUtils.js'][1039]++;
          for (var j = 0, s; (s = style[(j++)]);) {
            _$jscoverage['core/domUtils.js'][1040]++;
            ci.style[utils.cssStyleToDomStyle(s.split(":")[0])] = s.split(":")[1];
}
        }
      }
      _$jscoverage['core/domUtils.js'][1044]++;
      if (domUtils.isSameStyle(ci, node)) {
        _$jscoverage['core/domUtils.js'][1045]++;
        domUtils.remove(ci, true);
      }
      _$jscoverage['core/domUtils.js'][1047]++;
      continue;
    }
    _$jscoverage['core/domUtils.js'][1049]++;
    if (domUtils.isSameElement(node, ci)) {
      _$jscoverage['core/domUtils.js'][1050]++;
      domUtils.remove(ci, true);
    }
}
}), getElementsByTagName: (function (node, name, filter) {
  _$jscoverage['core/domUtils.js'][1061]++;
  if ((filter && utils.isString(filter))) {
    _$jscoverage['core/domUtils.js'][1062]++;
    var className = filter;
    _$jscoverage['core/domUtils.js'][1063]++;
    filter = (function (node) {
  _$jscoverage['core/domUtils.js'][1063]++;
  return domUtils.hasClass(node, className);
});
  }
  _$jscoverage['core/domUtils.js'][1065]++;
  name = utils.trim(name).replace(/[ ]{2,}/g, " ").split(" ");
  _$jscoverage['core/domUtils.js'][1066]++;
  var arr = [];
  _$jscoverage['core/domUtils.js'][1067]++;
  for (var n = 0, ni; (ni = name[(n++)]);) {
    _$jscoverage['core/domUtils.js'][1068]++;
    var list = node.getElementsByTagName(ni);
    _$jscoverage['core/domUtils.js'][1069]++;
    for (var i = 0, ci; (ci = list[(i++)]);) {
      _$jscoverage['core/domUtils.js'][1070]++;
      if (((! filter) || filter(ci))) {
        _$jscoverage['core/domUtils.js'][1071]++;
        arr.push(ci);
      }
}
}
  _$jscoverage['core/domUtils.js'][1075]++;
  return arr;
}), mergeToParent: (function (node) {
  _$jscoverage['core/domUtils.js'][1106]++;
  var parent = node.parentNode;
  _$jscoverage['core/domUtils.js'][1107]++;
  while ((parent && dtd.$removeEmpty[parent.tagName])) {
    _$jscoverage['core/domUtils.js'][1108]++;
    if (((parent.tagName == node.tagName) || (parent.tagName == "A"))) {
      _$jscoverage['core/domUtils.js'][1109]++;
      domUtils.trimWhiteTextNode(parent);
      _$jscoverage['core/domUtils.js'][1111]++;
      if ((((parent.tagName == "SPAN") && (! domUtils.isSameStyle(parent, node))) || ((parent.tagName == "A") && (node.tagName == "SPAN")))) {
        _$jscoverage['core/domUtils.js'][1113]++;
        if (((parent.childNodes.length > 1) || (parent !== node.parentNode))) {
          _$jscoverage['core/domUtils.js'][1114]++;
          node.style.cssText = (parent.style.cssText + ";" + node.style.cssText);
          _$jscoverage['core/domUtils.js'][1115]++;
          parent = parent.parentNode;
          _$jscoverage['core/domUtils.js'][1116]++;
          continue;
        }
        else {
          _$jscoverage['core/domUtils.js'][1118]++;
          parent.style.cssText += (";" + node.style.cssText);
          _$jscoverage['core/domUtils.js'][1120]++;
          if ((parent.tagName == "A")) {
            _$jscoverage['core/domUtils.js'][1121]++;
            parent.style.textDecoration = "underline";
          }
        }
      }
      _$jscoverage['core/domUtils.js'][1125]++;
      if ((parent.tagName != "A")) {
        _$jscoverage['core/domUtils.js'][1126]++;
        ((parent === node.parentNode) && domUtils.remove(node, true));
        _$jscoverage['core/domUtils.js'][1127]++;
        break;
      }
    }
    _$jscoverage['core/domUtils.js'][1130]++;
    parent = parent.parentNode;
}
}), mergeSibling: (function (node, ignorePre, ignoreNext) {
  _$jscoverage['core/domUtils.js'][1189]++;
  function merge(rtl, start, node) {
    _$jscoverage['core/domUtils.js'][1190]++;
    var next;
    _$jscoverage['core/domUtils.js'][1191]++;
    if (((next = node[rtl]) && (! domUtils.isBookmarkNode(next)) && (next.nodeType == 1) && domUtils.isSameElement(node, next))) {
      _$jscoverage['core/domUtils.js'][1192]++;
      while (next.firstChild) {
        _$jscoverage['core/domUtils.js'][1193]++;
        if ((start == "firstChild")) {
          _$jscoverage['core/domUtils.js'][1194]++;
          node.insertBefore(next.lastChild, node.firstChild);
        }
        else {
          _$jscoverage['core/domUtils.js'][1196]++;
          node.appendChild(next.firstChild);
        }
}
      _$jscoverage['core/domUtils.js'][1199]++;
      domUtils.remove(next);
    }
}
  _$jscoverage['core/domUtils.js'][1202]++;
  ((! ignorePre) && merge("previousSibling", "firstChild", node));
  _$jscoverage['core/domUtils.js'][1203]++;
  ((! ignoreNext) && merge("nextSibling", "lastChild", node));
}), unSelectable: ((ie || browser.opera)? (function (node) {
  _$jscoverage['core/domUtils.js'][1218]++;
  node.onselectstart = (function () {
  _$jscoverage['core/domUtils.js'][1219]++;
  return false;
});
  _$jscoverage['core/domUtils.js'][1221]++;
  node.onclick = (node.onkeyup = (node.onkeydown = (function () {
  _$jscoverage['core/domUtils.js'][1222]++;
  return false;
})));
  _$jscoverage['core/domUtils.js'][1224]++;
  node.unselectable = "on";
  _$jscoverage['core/domUtils.js'][1225]++;
  node.setAttribute("unselectable", "on");
  _$jscoverage['core/domUtils.js'][1226]++;
  for (var i = 0, ci; (ci = node.all[(i++)]);) {
    _$jscoverage['core/domUtils.js'][1227]++;
    switch (ci.tagName.toLowerCase()) {
    case "iframe":
    case "textarea":
    case "input":
    case "select":
      _$jscoverage['core/domUtils.js'][1232]++;
      break;
    default:
      _$jscoverage['core/domUtils.js'][1234]++;
      ci.unselectable = "on";
      _$jscoverage['core/domUtils.js'][1235]++;
      node.setAttribute("unselectable", "on");
    }
}
}): (function (node) {
  _$jscoverage['core/domUtils.js'][1239]++;
  node.style.MozUserSelect = (node.style.webkitUserSelect = (node.style.KhtmlUserSelect = "none"));
})), removeAttributes: (function (node, attrNames) {
  _$jscoverage['core/domUtils.js'][1286]++;
  attrNames = (utils.isArray(attrNames)? attrNames: utils.trim(attrNames).replace(/[ ]{2,}/g, " ").split(" "));
  _$jscoverage['core/domUtils.js'][1287]++;
  for (var i = 0, ci; (ci = attrNames[(i++)]);) {
    _$jscoverage['core/domUtils.js'][1288]++;
    ci = (attrFix[ci] || ci);
    _$jscoverage['core/domUtils.js'][1289]++;
    switch (ci) {
    case "className":
      _$jscoverage['core/domUtils.js'][1291]++;
      node[ci] = "";
      _$jscoverage['core/domUtils.js'][1292]++;
      break;
    case "style":
      _$jscoverage['core/domUtils.js'][1294]++;
      node.style.cssText = "";
      _$jscoverage['core/domUtils.js'][1295]++;
      ((! browser.ie) && node.removeAttributeNode(node.getAttributeNode("style")));
    }
    _$jscoverage['core/domUtils.js'][1297]++;
    node.removeAttribute(ci);
}
}), createElement: (function (doc, tag, attrs) {
  _$jscoverage['core/domUtils.js'][1323]++;
  return domUtils.setAttributes(doc.createElement(tag), attrs);
}), setAttributes: (function (node, attrs) {
  _$jscoverage['core/domUtils.js'][1349]++;
  for (var attr in attrs) {
    _$jscoverage['core/domUtils.js'][1350]++;
    if (attrs.hasOwnProperty(attr)) {
      _$jscoverage['core/domUtils.js'][1351]++;
      var value = attrs[attr];
      _$jscoverage['core/domUtils.js'][1352]++;
      switch (attr) {
      case "class":
        _$jscoverage['core/domUtils.js'][1355]++;
        node.className = value;
        _$jscoverage['core/domUtils.js'][1356]++;
        break;
      case "style":
        _$jscoverage['core/domUtils.js'][1358]++;
        node.style.cssText = (node.style.cssText + ";" + value);
        _$jscoverage['core/domUtils.js'][1359]++;
        break;
      case "innerHTML":
        _$jscoverage['core/domUtils.js'][1361]++;
        node[attr] = value;
        _$jscoverage['core/domUtils.js'][1362]++;
        break;
      case "value":
        _$jscoverage['core/domUtils.js'][1364]++;
        node.value = value;
        _$jscoverage['core/domUtils.js'][1365]++;
        break;
      default:
        _$jscoverage['core/domUtils.js'][1367]++;
        node.setAttribute((attrFix[attr] || attr), value);
      }
    }
}
  _$jscoverage['core/domUtils.js'][1371]++;
  return node;
}), getComputedStyle: (function (element, styleName) {
  _$jscoverage['core/domUtils.js'][1398]++;
  var pros = "width height top left";
  _$jscoverage['core/domUtils.js'][1400]++;
  if ((pros.indexOf(styleName) > -1)) {
    _$jscoverage['core/domUtils.js'][1401]++;
    return (element[("offset" + styleName.replace(/^\w/, (function (s) {
  _$jscoverage['core/domUtils.js'][1401]++;
  return s.toUpperCase();
})))] + "px");
  }
  _$jscoverage['core/domUtils.js'][1404]++;
  if ((element.nodeType == 3)) {
    _$jscoverage['core/domUtils.js'][1405]++;
    element = element.parentNode;
  }
  _$jscoverage['core/domUtils.js'][1408]++;
  if ((browser.ie && (browser.version < 9) && (styleName == "font-size") && (! element.style.fontSize) && (! dtd.$empty[element.tagName]) && (! dtd.$nonChild[element.tagName]))) {
    _$jscoverage['core/domUtils.js'][1410]++;
    var span = element.ownerDocument.createElement("span");
    _$jscoverage['core/domUtils.js'][1411]++;
    span.style.cssText = "padding:0;border:0;font-family:simsun;";
    _$jscoverage['core/domUtils.js'][1412]++;
    span.innerHTML = ".";
    _$jscoverage['core/domUtils.js'][1413]++;
    element.appendChild(span);
    _$jscoverage['core/domUtils.js'][1414]++;
    var result = span.offsetHeight;
    _$jscoverage['core/domUtils.js'][1415]++;
    element.removeChild(span);
    _$jscoverage['core/domUtils.js'][1416]++;
    span = null;
    _$jscoverage['core/domUtils.js'][1417]++;
    return (result + "px");
  }
  _$jscoverage['core/domUtils.js'][1419]++;
  try {
    _$jscoverage['core/domUtils.js'][1420]++;
    var value = (domUtils.getStyle(element, styleName) || (window.getComputedStyle? domUtils.getWindow(element).getComputedStyle(element, "").getPropertyValue(styleName): (element.currentStyle || element.style)[utils.cssStyleToDomStyle(styleName)]));
  }
  catch (e) {
    _$jscoverage['core/domUtils.js'][1425]++;
    return "";
  }
  _$jscoverage['core/domUtils.js'][1427]++;
  return utils.transUnitToPx(utils.fixColor(styleName, value));
}), removeClasses: (function (elm, classNames) {
  _$jscoverage['core/domUtils.js'][1471]++;
  classNames = (utils.isArray(classNames)? classNames: utils.trim(classNames).replace(/[ ]{2,}/g, " ").split(" "));
  _$jscoverage['core/domUtils.js'][1473]++;
  for (var i = 0, ci, cls = elm.className; (ci = classNames[(i++)]);) {
    _$jscoverage['core/domUtils.js'][1474]++;
    cls = cls.replace(new RegExp(("\\b" + ci + "\\b")), "");
}
  _$jscoverage['core/domUtils.js'][1476]++;
  cls = utils.trim(cls).replace(/[ ]{2,}/g, " ");
  _$jscoverage['core/domUtils.js'][1477]++;
  if (cls) {
    _$jscoverage['core/domUtils.js'][1478]++;
    elm.className = cls;
  }
  else {
    _$jscoverage['core/domUtils.js'][1480]++;
    domUtils.removeAttributes(elm, ["class"]);
  }
}), addClass: (function (elm, classNames) {
  _$jscoverage['core/domUtils.js'][1528]++;
  if ((! elm)) {
    _$jscoverage['core/domUtils.js'][1528]++;
    return;
  }
  _$jscoverage['core/domUtils.js'][1529]++;
  classNames = utils.trim(classNames).replace(/[ ]{2,}/g, " ").split(" ");
  _$jscoverage['core/domUtils.js'][1530]++;
  for (var i = 0, ci, cls = elm.className; (ci = classNames[(i++)]);) {
    _$jscoverage['core/domUtils.js'][1531]++;
    if ((! new RegExp(("\\b" + ci + "\\b")).test(cls))) {
      _$jscoverage['core/domUtils.js'][1532]++;
      elm.className += (" " + ci);
    }
}
}), hasClass: (function (element, className) {
  _$jscoverage['core/domUtils.js'][1581]++;
  if (utils.isRegExp(className)) {
    _$jscoverage['core/domUtils.js'][1582]++;
    return className.test(element.className);
  }
  _$jscoverage['core/domUtils.js'][1584]++;
  className = utils.trim(className).replace(/[ ]{2,}/g, " ").split(" ");
  _$jscoverage['core/domUtils.js'][1585]++;
  for (var i = 0, ci, cls = element.className; (ci = className[(i++)]);) {
    _$jscoverage['core/domUtils.js'][1586]++;
    if ((! new RegExp(("\\b" + ci + "\\b"), "i").test(cls))) {
      _$jscoverage['core/domUtils.js'][1587]++;
      return false;
    }
}
  _$jscoverage['core/domUtils.js'][1590]++;
  return ((i - 1) == className.length);
}), preventDefault: (function (evt) {
  _$jscoverage['core/domUtils.js'][1603]++;
  (evt.preventDefault? evt.preventDefault(): (evt.returnValue = false));
}), removeStyle: (function (element, name) {
  _$jscoverage['core/domUtils.js'][1628]++;
  if (browser.ie) {
    _$jscoverage['core/domUtils.js'][1630]++;
    if ((name == "color")) {
      _$jscoverage['core/domUtils.js'][1631]++;
      name = ("(^|;)" + name);
    }
    _$jscoverage['core/domUtils.js'][1633]++;
    element.style.cssText = element.style.cssText.replace(new RegExp((name + "[^:]*:[^;]+;?"), "ig"), "");
  }
  else {
    _$jscoverage['core/domUtils.js'][1635]++;
    if (element.style.removeProperty) {
      _$jscoverage['core/domUtils.js'][1636]++;
      element.style.removeProperty(name);
    }
    else {
      _$jscoverage['core/domUtils.js'][1638]++;
      element.style.removeAttribute(utils.cssStyleToDomStyle(name));
    }
  }
  _$jscoverage['core/domUtils.js'][1643]++;
  if ((! element.style.cssText)) {
    _$jscoverage['core/domUtils.js'][1644]++;
    domUtils.removeAttributes(element, ["style"]);
  }
}), getStyle: (function (element, name) {
  _$jscoverage['core/domUtils.js'][1673]++;
  var value = element.style[utils.cssStyleToDomStyle(name)];
  _$jscoverage['core/domUtils.js'][1674]++;
  return utils.fixColor(name, value);
}), setStyle: (function (element, name, value) {
  _$jscoverage['core/domUtils.js'][1703]++;
  element.style[utils.cssStyleToDomStyle(name)] = value;
  _$jscoverage['core/domUtils.js'][1704]++;
  if ((! utils.trim(element.style.cssText))) {
    _$jscoverage['core/domUtils.js'][1705]++;
    this.removeAttributes(element, "style");
  }
}), setStyles: (function (element, styles) {
  _$jscoverage['core/domUtils.js'][1735]++;
  for (var name in styles) {
    _$jscoverage['core/domUtils.js'][1736]++;
    if (styles.hasOwnProperty(name)) {
      _$jscoverage['core/domUtils.js'][1737]++;
      domUtils.setStyle(element, name, styles[name]);
    }
}
}), removeDirtyAttr: (function (node) {
  _$jscoverage['core/domUtils.js'][1747]++;
  for (var i = 0, ci, nodes = node.getElementsByTagName("*"); (ci = nodes[(i++)]);) {
    _$jscoverage['core/domUtils.js'][1748]++;
    ci.removeAttribute("_moz_dirty");
}
  _$jscoverage['core/domUtils.js'][1750]++;
  node.removeAttribute("_moz_dirty");
}), getChildCount: (function (node, fn) {
  _$jscoverage['core/domUtils.js'][1798]++;
  var count = 0, first = node.firstChild;
  _$jscoverage['core/domUtils.js'][1799]++;
  fn = (fn || (function () {
  _$jscoverage['core/domUtils.js'][1800]++;
  return 1;
}));
  _$jscoverage['core/domUtils.js'][1802]++;
  while (first) {
    _$jscoverage['core/domUtils.js'][1803]++;
    if (fn(first)) {
      _$jscoverage['core/domUtils.js'][1804]++;
      (count++);
    }
    _$jscoverage['core/domUtils.js'][1806]++;
    first = first.nextSibling;
}
  _$jscoverage['core/domUtils.js'][1808]++;
  return count;
}), isEmptyNode: (function (node) {
  _$jscoverage['core/domUtils.js'][1822]++;
  return ((! node.firstChild) || (domUtils.getChildCount(node, (function (node) {
  _$jscoverage['core/domUtils.js'][1823]++;
  return ((! domUtils.isBr(node)) && (! domUtils.isBookmarkNode(node)) && (! domUtils.isWhitespace(node)));
})) == 0));
}), clearSelectedArr: (function (nodes) {
  _$jscoverage['core/domUtils.js'][1839]++;
  var node;
  _$jscoverage['core/domUtils.js'][1840]++;
  while ((node = nodes.pop())) {
    _$jscoverage['core/domUtils.js'][1841]++;
    domUtils.removeAttributes(node, ["class"]);
}
}), scrollToView: (function (node, win, offsetTop) {
  _$jscoverage['core/domUtils.js'][1853]++;
  var getViewPaneSize = (function () {
  _$jscoverage['core/domUtils.js'][1854]++;
  var doc = win.document, mode = (doc.compatMode == "CSS1Compat");
  _$jscoverage['core/domUtils.js'][1856]++;
  return ({width: ((mode? doc.documentElement.clientWidth: doc.body.clientWidth) || 0), height: ((mode? doc.documentElement.clientHeight: doc.body.clientHeight) || 0)});
}), getScrollPosition = (function (win) {
  _$jscoverage['core/domUtils.js'][1862]++;
  if (("pageXOffset" in win)) {
    _$jscoverage['core/domUtils.js'][1863]++;
    return ({x: (win.pageXOffset || 0), y: (win.pageYOffset || 0)});
  }
  else {
    _$jscoverage['core/domUtils.js'][1869]++;
    var doc = win.document;
    _$jscoverage['core/domUtils.js'][1870]++;
    return ({x: (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0), y: (doc.documentElement.scrollTop || doc.body.scrollTop || 0)});
  }
});
  _$jscoverage['core/domUtils.js'][1876]++;
  var winHeight = getViewPaneSize().height, offset = ((winHeight * -1) + offsetTop);
  _$jscoverage['core/domUtils.js'][1877]++;
  offset += (node.offsetHeight || 0);
  _$jscoverage['core/domUtils.js'][1878]++;
  var elementPosition = domUtils.getXY(node);
  _$jscoverage['core/domUtils.js'][1879]++;
  offset += elementPosition.y;
  _$jscoverage['core/domUtils.js'][1880]++;
  var currentScroll = getScrollPosition(win).y;
  _$jscoverage['core/domUtils.js'][1882]++;
  if (((offset > currentScroll) || (offset < (currentScroll - winHeight)))) {
    _$jscoverage['core/domUtils.js'][1883]++;
    win.scrollTo(0, (offset + ((offset < 0)? -20: 20)));
  }
}), isBr: (function (node) {
  _$jscoverage['core/domUtils.js'][1894]++;
  return ((node.nodeType == 1) && (node.tagName == "BR"));
}), isFillChar: (function (node, isInStart) {
  _$jscoverage['core/domUtils.js'][1905]++;
  return ((node.nodeType == 3) && (! node.nodeValue.replace(new RegExp(((isInStart? "^": "") + domUtils.fillChar)), "").length));
}), isStartInblock: (function (range) {
  _$jscoverage['core/domUtils.js'][1910]++;
  var tmpRange = range.cloneRange(), flag = 0, start = tmpRange.startContainer, tmp;
  _$jscoverage['core/domUtils.js'][1914]++;
  if (((start.nodeType == 1) && start.childNodes[tmpRange.startOffset])) {
    _$jscoverage['core/domUtils.js'][1915]++;
    start = start.childNodes[tmpRange.startOffset];
    _$jscoverage['core/domUtils.js'][1916]++;
    var pre = start.previousSibling;
    _$jscoverage['core/domUtils.js'][1917]++;
    while ((pre && domUtils.isFillChar(pre))) {
      _$jscoverage['core/domUtils.js'][1918]++;
      start = pre;
      _$jscoverage['core/domUtils.js'][1919]++;
      pre = pre.previousSibling;
}
  }
  _$jscoverage['core/domUtils.js'][1922]++;
  if ((this.isFillChar(start, true) && (tmpRange.startOffset == 1))) {
    _$jscoverage['core/domUtils.js'][1923]++;
    tmpRange.setStartBefore(start);
    _$jscoverage['core/domUtils.js'][1924]++;
    start = tmpRange.startContainer;
  }
  _$jscoverage['core/domUtils.js'][1927]++;
  while ((start && domUtils.isFillChar(start))) {
    _$jscoverage['core/domUtils.js'][1928]++;
    tmp = start;
    _$jscoverage['core/domUtils.js'][1929]++;
    start = start.previousSibling;
}
  _$jscoverage['core/domUtils.js'][1931]++;
  if (tmp) {
    _$jscoverage['core/domUtils.js'][1932]++;
    tmpRange.setStartBefore(tmp);
    _$jscoverage['core/domUtils.js'][1933]++;
    start = tmpRange.startContainer;
  }
  _$jscoverage['core/domUtils.js'][1935]++;
  if (((start.nodeType == 1) && domUtils.isEmptyNode(start) && (tmpRange.startOffset == 1))) {
    _$jscoverage['core/domUtils.js'][1936]++;
    tmpRange.setStart(start, 0).collapse(true);
  }
  _$jscoverage['core/domUtils.js'][1938]++;
  while ((! tmpRange.startOffset)) {
    _$jscoverage['core/domUtils.js'][1939]++;
    start = tmpRange.startContainer;
    _$jscoverage['core/domUtils.js'][1940]++;
    if ((domUtils.isBlockElm(start) || domUtils.isBody(start))) {
      _$jscoverage['core/domUtils.js'][1941]++;
      flag = 1;
      _$jscoverage['core/domUtils.js'][1942]++;
      break;
    }
    _$jscoverage['core/domUtils.js'][1944]++;
    var pre = tmpRange.startContainer.previousSibling, tmpNode;
    _$jscoverage['core/domUtils.js'][1946]++;
    if ((! pre)) {
      _$jscoverage['core/domUtils.js'][1947]++;
      tmpRange.setStartBefore(tmpRange.startContainer);
    }
    else {
      _$jscoverage['core/domUtils.js'][1949]++;
      while ((pre && domUtils.isFillChar(pre))) {
        _$jscoverage['core/domUtils.js'][1950]++;
        tmpNode = pre;
        _$jscoverage['core/domUtils.js'][1951]++;
        pre = pre.previousSibling;
}
      _$jscoverage['core/domUtils.js'][1953]++;
      if (tmpNode) {
        _$jscoverage['core/domUtils.js'][1954]++;
        tmpRange.setStartBefore(tmpNode);
      }
      else {
        _$jscoverage['core/domUtils.js'][1956]++;
        tmpRange.setStartBefore(tmpRange.startContainer);
      }
    }
}
  _$jscoverage['core/domUtils.js'][1960]++;
  return ((flag && (! domUtils.isBody(tmpRange.startContainer)))? 1: 0);
}), isEmptyBlock: (function (node, reg) {
  _$jscoverage['core/domUtils.js'][1987]++;
  if ((node.nodeType != 1)) {
    _$jscoverage['core/domUtils.js'][1988]++;
    return 0;
  }
  _$jscoverage['core/domUtils.js'][1989]++;
  reg = (reg || new RegExp(("[ \t\r\n" + domUtils.fillChar + "]"), "g"));
  _$jscoverage['core/domUtils.js'][1990]++;
  if ((node[(browser.ie? "innerText": "textContent")].replace(reg, "").length > 0)) {
    _$jscoverage['core/domUtils.js'][1991]++;
    return 0;
  }
  _$jscoverage['core/domUtils.js'][1993]++;
  for (var n in dtd.$isNotEmpty) {
    _$jscoverage['core/domUtils.js'][1994]++;
    if (node.getElementsByTagName(n).length) {
      _$jscoverage['core/domUtils.js'][1995]++;
      return 0;
    }
}
  _$jscoverage['core/domUtils.js'][1998]++;
  return 1;
}), setViewportOffset: (function (element, offset) {
  _$jscoverage['core/domUtils.js'][2028]++;
  var left = (parseInt(element.style.left) | 0);
  _$jscoverage['core/domUtils.js'][2029]++;
  var top = (parseInt(element.style.top) | 0);
  _$jscoverage['core/domUtils.js'][2030]++;
  var rect = element.getBoundingClientRect();
  _$jscoverage['core/domUtils.js'][2031]++;
  var offsetLeft = (offset.left - rect.left);
  _$jscoverage['core/domUtils.js'][2032]++;
  var offsetTop = (offset.top - rect.top);
  _$jscoverage['core/domUtils.js'][2033]++;
  if (offsetLeft) {
    _$jscoverage['core/domUtils.js'][2034]++;
    element.style.left = (left + offsetLeft + "px");
  }
  _$jscoverage['core/domUtils.js'][2036]++;
  if (offsetTop) {
    _$jscoverage['core/domUtils.js'][2037]++;
    element.style.top = (top + offsetTop + "px");
  }
}), fillNode: (function (doc, node) {
  _$jscoverage['core/domUtils.js'][2065]++;
  var tmpNode = (browser.ie? doc.createTextNode(domUtils.fillChar): doc.createElement("br"));
  _$jscoverage['core/domUtils.js'][2066]++;
  node.innerHTML = "";
  _$jscoverage['core/domUtils.js'][2067]++;
  node.appendChild(tmpNode);
}), moveChild: (function (src, tag, dir) {
  _$jscoverage['core/domUtils.js'][2133]++;
  while (src.firstChild) {
    _$jscoverage['core/domUtils.js'][2134]++;
    if ((dir && tag.firstChild)) {
      _$jscoverage['core/domUtils.js'][2135]++;
      tag.insertBefore(src.lastChild, tag.firstChild);
    }
    else {
      _$jscoverage['core/domUtils.js'][2137]++;
      tag.appendChild(src.firstChild);
    }
}
}), hasNoAttributes: (function (node) {
  _$jscoverage['core/domUtils.js'][2163]++;
  return (browser.ie? /^<\w+\s*?>/.test(node.outerHTML): (node.attributes.length == 0));
}), isCustomeNode: (function (node) {
  _$jscoverage['core/domUtils.js'][2174]++;
  return ((node.nodeType == 1) && node.getAttribute("_ue_custom_node_"));
}), isTagNode: (function (node, tagName) {
  _$jscoverage['core/domUtils.js'][2196]++;
  return ((node.nodeType == 1) && new RegExp(("^" + node.tagName + "$"), "i").test(tagName));
}), filterNodeList: (function (nodelist, filter, forAll) {
  _$jscoverage['core/domUtils.js'][2266]++;
  var results = [];
  _$jscoverage['core/domUtils.js'][2267]++;
  if ((! utils.isFunction(filter))) {
    _$jscoverage['core/domUtils.js'][2268]++;
    var str = filter;
    _$jscoverage['core/domUtils.js'][2269]++;
    filter = (function (n) {
  _$jscoverage['core/domUtils.js'][2270]++;
  return (utils.indexOf((utils.isArray(str)? str: str.split(" ")), n.tagName.toLowerCase()) != -1);
});
  }
  _$jscoverage['core/domUtils.js'][2273]++;
  utils.each(nodelist, (function (n) {
  _$jscoverage['core/domUtils.js'][2274]++;
  (filter(n) && results.push(n));
}));
  _$jscoverage['core/domUtils.js'][2276]++;
  return ((results.length == 0)? null: (((results.length == 1) || (! forAll))? results[0]: results));
}), isInNodeEndBoundary: (function (rng, node) {
  _$jscoverage['core/domUtils.js'][2280]++;
  var start = rng.startContainer;
  _$jscoverage['core/domUtils.js'][2281]++;
  if (((start.nodeType == 3) && (rng.startOffset != start.nodeValue.length))) {
    _$jscoverage['core/domUtils.js'][2282]++;
    return 0;
  }
  _$jscoverage['core/domUtils.js'][2284]++;
  if (((start.nodeType == 1) && (rng.startOffset != start.childNodes.length))) {
    _$jscoverage['core/domUtils.js'][2285]++;
    return 0;
  }
  _$jscoverage['core/domUtils.js'][2287]++;
  while ((start !== node)) {
    _$jscoverage['core/domUtils.js'][2288]++;
    if (start.nextSibling) {
      _$jscoverage['core/domUtils.js'][2289]++;
      return 0;
    }
    _$jscoverage['core/domUtils.js'][2290]++;
    ;
    _$jscoverage['core/domUtils.js'][2291]++;
    start = start.parentNode;
}
  _$jscoverage['core/domUtils.js'][2293]++;
  return 1;
}), isBoundaryNode: (function (node, dir) {
  _$jscoverage['core/domUtils.js'][2296]++;
  var tmp;
  _$jscoverage['core/domUtils.js'][2297]++;
  while ((! domUtils.isBody(node))) {
    _$jscoverage['core/domUtils.js'][2298]++;
    tmp = node;
    _$jscoverage['core/domUtils.js'][2299]++;
    node = node.parentNode;
    _$jscoverage['core/domUtils.js'][2300]++;
    if ((tmp !== node[dir])) {
      _$jscoverage['core/domUtils.js'][2301]++;
      return false;
    }
}
  _$jscoverage['core/domUtils.js'][2304]++;
  return true;
})});
_$jscoverage['core/domUtils.js'][2307]++;
var fillCharReg = new RegExp(domUtils.fillChar, "g");
