var su; function redirectURL(u) { var sr = u.toString(); if (sr==su) { return u; } var mw = sr.match(new RegExp('^http://ja\\.wikipedia\\.org/wiki/([^:?#]+)$')); if (!mw) { return u; } createPopupString(mw[1]); return null; } function findEndTag(sh,its,sp,ns) { if (its<0) { return -1; } var rt = new RegExp(sp,'ig'); rt.lastIndex = its + ns; var nt=1; var mt; while ((mt=rt.exec(sh))!=null) { if (mt[0].charAt(1)=='/') { nt--; if (nt==0) { return rt.lastIndex+1; } } else { nt++; } } return -1; } function findTablesEnd(sh,its) { if (its<0) { return -1; } var ite; while (true) { ite = findEndTag(sh,its,'ite+1)) { return ite; } } } function createPopupString(sw) { if (!sw) { v2c.alert('検索語を取得できませんでした。'); return; } var su0 = 'http://ja.wikipedia.org/wiki/'; su = su0 + sw; var sh = v2c.readURL(su); if (!sh) { v2c.alert('ページを取得できませんでした。'); return; } var vcx = v2c.context; var rh = new RegExp('>([^<>]+)','ig'); var mh = rh.exec(sh); if (mh) { sw = mh[1]; } else { sw = decodeURIComponent(sw); } var sr; var ma = sh.match(new RegExp(' title="\\w+:曖昧さ回避"','i')); if (ma) { var ia = ma.index; var rl = new RegExp('','ig'); rl.lastIndex = rh.lastIndex; sr = ''; var nu=0; var iu=0; var ml; while ((ml=rl.exec(sh))!=null) { if (ml.index>ia) { break; } if (ml[0].length==4) { if (nu==0) { iu = ml.index; } nu++; } else { nu--; if (nu<0) { break; } if (nu==0) { sr += sh.substring(iu,rl.lastIndex); } } } if (!sr) { v2c.alert('曖昧さ回避の説明を抽出できませんでした。'); return; } sr = '

'+sw+'】(曖昧さ回避)

'+sr; } else { var re = new RegExp('(?:

[^]+?

|<[ou]l>[^]+?)\\n?','ig'); var id = sh.indexOf('-Disambig.'); if (id>0) { re.lastIndex = id + 100; } else { re.lastIndex = rh.lastIndex; } var its = sh.indexOf('0)&&(mei>li)) { break; } var me0 = me[0]; if (li==0) { if (me0.charAt(1)!='p') { continue; } if (me0.match(new RegExp('^(?:<[^>]*>\\s*)+$'))) { continue; } while ((ite>0)&&(ite0)&&(mei>its)&&(mei\\s*','ig'); rr.lastIndex = li; var mr = rr.exec(sh); if (mr&&(mr.index==li)) { li = rr.lastIndex; } sx += sh.substring(me.index,li); re.lastIndex = li; } else { sx += me0; li = re.lastIndex; } } if (!sx) { v2c.alert('説明を抽出できませんでした。'); return; } sx = sx.replace(new RegExp('','ig'),''); sr = '
'+sw+'
'; var si; var args = vcx.args; if ((args.length>0)&&(args[0]=='i')) { var ri = new RegExp('(]*" +title="([^"]+)")?[^>]*>(]+>))(?:\\s*
\\s*
[^]+?
([^]+?)
)?','ig'); var mi; while ((mi=ri.exec(sh))!=null) { var si2 = mi[3]; var mw = si2.match(new RegExp(' width="(\\d+)"')); var mh = si2.match(new RegExp(' height="(\\d+)"')); if (mw&&(mw[1].length>=3)&&mh&&(mh[1].length>=3)) { var mi4 = mi[4]; if (si!=null) { if (!mi4) { continue; } } si = mi[1]; var sc = mi[2]; if (!sc) { sc = mi4; } if (sc) { si += '
' + sc; } if (mi4) { break; } } } } if (si) { sr += '
'+sx+''+si+'
'; } else { sr += sx; } sr += '
'; } sr = sr.replace(new RegExp('(]*)class="new"([^>]*>)','gi'),'$1style="color:red"$2'); vcx.setPopupHTML(''+sr+''); vcx.setRedirectURL(true); } function encodeWord(sw) { if (sw) { sw = sw.trim(); var cl; for (var i=sw.length()-1; i>=0; i--) { var ci = sw.charAt(i); if ((ci>=0xFF01)&&(ci<=0xFF5A)) { if (!cl) { cl = sw.toCharArray(); } cl[i] = ci - 0xFEE0; } } if (cl) { sw = new java.lang.String(cl); } } return (sw&&(sw.length()>0))?encodeURIComponent(sw):null; } createPopupString(encodeWord(v2c.context.selText));