/**--infoview_pub.js--**/ /**--infoview_pub.js--**/ ext.ns('wcm.lang'); var ua = navigator.useragent.tolowercase(); var issafari = (/webkit|khtml/).test(ua), isgecko = !issafari && ua.indexof("gecko") > -1; var m_readfileurl, m_fileuploaddowithurl; var m_srootpath = '../images/infoview/'; pgc = { initfrmaction : function(){ var frmaction = $('frmaction'); m_srootpath = frmaction.resourcebase.value; var currdocid = getparameter("documentid") || 0; frmaction.documentid.value = currdocid; m_fileuploaddowithurl = frmaction.fileuploadurl.value; m_readfileurl = frmaction.readfileurl.value + '?filename='; if(currdocid > 0){ m_readfileurl = m_readfileurl.replace(/file_server_read\.jsp\?/, 'file_server_read_from_wcm.jsp?') } event.observe('submitbutton', 'click', function(){ var frm = $('frmaction'); window._databeforesubmit = {}; if(excenter._beforesubmit(window._databeforesubmit)===false)return; if(frm.onlycached != null){ infodochelper.rendersubmit(frm.onlycached.value == 'true'); }else{ infodochelper.rendersubmit(); } }); if($('resetbutton')){ event.observe('resetbutton', 'click', function(){ var arr = document.body.getelementsbytagname('*'), toremoves = []; for(var i=0, n=arr.length; i{2}', buildmenu : function(items, tg){ var rst = []; for(var i=0, n=items.length; i 0 && frmaction.cachedinfoviewid) { frmaction.cachedinfoviewid.value = ncachedinfoviewid; frmaction.bisverifycode.value = "false"; } frmaction.submit(); } }; function copyattrs(src, tg){ var attrs = src.attributes; for(var i=0; i 30; nd.setattribute('infodoc_data', 1); nd.setattribute("element-type", istextarea?2:1); var rp = nd; if(istextarea) { rp = document.createelement("textarea"); rp.style.overflow = "auto"; } else { rp = document.createelement("input"); } copyattrs(nd, rp); if(istextarea) { rp.style.whitespace="pre-wrap"; } nd.parentnode.insertbefore(rp, nd.nextsibling); nd.parentnode.removechild(nd); if(nd.innerhtml!=""){ rp.value = nd.innerhtml; } if(only){ disableinput(rp); return rp; } _transrule_.notifymustfill(rp, {marginleft:'-15px'}); return rp; }); _transrule_.save("span", "richtext", function(nd, only) { nd.style.overflow = "auto"; nd.setattribute('infodoc_data', 1); nd.setattribute("element-type", "7"); if(!isgecko){ nd.contenteditable = !only; }else{ var rp = document.createelement("iframe"); rp.src = ''; copyattrs(nd, rp); nd.parentnode.insertbefore(rp, nd.nextsibling); nd.parentnode.removechild(nd); var doc = rp.contentwindow.document; doc.write(''); doc.close(); doc.designmode = only ? 'off' : 'on'; nd = rp; } if(nd.innerhtml!=""){ nd.value = nd.innerhtml; } if(only)return nd; maketexteditorrule(nd); _transrule_.notifymustfill(nd, {marginleft:'-15px'}); return nd; }); function maketexteditorrule(currnode){ var img = document.createelement("img"); img.src = m_srootpath + "editor.gif"; img.title = '\u70b9\u51fb\u7f16\u8f91\u683c\u5f0f\u6587\u672c'; img.style.width = "16px"; img.style.height = "16px"; img.setattribute('_action', 'openeditor'); //img.setattribute('trs_temp_id', nd.getattribute("trs_temp_id", "2")); img.setattribute('trs_temp_id', currnode.id); _transrule_.appendextool(currnode, img, {marginleft:'-5px'}); } _transrule_.save("select", "dropdown", function(nd, only) { nd.setattribute('infodoc_data', 1); nd.setattribute("element-type", "8"); nd.disabled = only; _transrule_.notifymustfill(nd); }); _transrule_.save("select", "listbox", function(nd, only) { nd.setattribute('infodoc_data', 1); nd.setattribute("element-type", "8"); nd.disabled = only; _transrule_.notifymustfill(nd); }); _transrule_.save("input", "checkbox", function(nd, only) { nd.setattribute('infodoc_data', 1); nd.setattribute("element-type", "9"); nd.disabled = only; }); _transrule_.save("input", "optionbutton", function(nd, only) { nd.setattribute('infodoc_data', 1); nd.setattribute("element-type", "10"); nd.disabled = only; }); _transrule_.save("div", "section", function(nd, only) { nd.setattribute("element-type", "13"); }); _transrule_.save("div", "repeatingsection", function(nd, only) { nd.setattribute("element-type", "3"); nd.setattribute("fly-button", 1); nd.setattribute("context-menu", 1); if(only)return; nd.style.border = '1px dotted gray'; }); _transrule_.save("tbody", "repeatingtable", function(nd, only) { nd.setattribute("element-type", "4"); nd.setattribute("fly-button", 1); nd.setattribute("context-menu", 1); //\u517c\u5bb9\u591a\u6d4f\u89c8\u5668\uff0c\u7ed9\u91cd\u590d\u8868\u7684\u7236\u5143\u7d20\u6dfb\u52a0\u6837\u5f0f if(nd.parentnode.tagname.touppercase() == 'table'){ var repeatingtablecontainer = nd.parentnode.parentnode; if(repeatingtablecontainer.tagname.touppercase() == 'div') repeatingtablecontainer.classname = 'xdrepeatingtablecontainer'; } if(only)return; nd.style.border = '1px dotted gray'; }); _transrule_.save("span", "listitem_plain", function(nd, only) { nd.setattribute("element-type", "1"); nd.setattribute('infodoc_data', 1); var rp = document.createelement("input"); copyattrs(nd, rp); nd.parentnode.insertbefore(rp, nd.nextsibling); nd.parentnode.removechild(nd); if(only){ disableinput(rp); return rp; } _transrule_.notifymustfill(rp); return rp; }); _transrule_.save("span", "dtpicker_dttext", function(nd, only) { nd.setattribute('infodoc_data', 1); nd.setattribute("element-type", "11"); var rp = document.createelement("input"); copyattrs(nd, rp); rp.style.border = 0; //\u65e5\u671f\u63a7\u4ef6\u591a\u6d4f\u89c8\u5668\u7684\u517c\u5bb9\uff0c\u51cf\u6389\u7684\u5bbd\u5ea6\u4e3a\u65e5\u671f\u6309\u94ae\u5360\u7684\u533a\u57df rp.style.width = (nd.parentnode.offsetwidth - 37) + 'px'; rp.style.height = (nd.parentnode.offsetheight - 6) + 'px'; //\u65e5\u671f\u63a7\u4ef6\u7684\u7236\u5bb9\u5668\u6307\u5b9a100%\u4f1a\u6ea2\u51fa if(nd.parentnode.style.width == "100%") nd.parentnode.style.width = (nd.parentnode.offsetwidth - 5)+ "px"; nd.parentnode.insertbefore(rp, nd.nextsibling); nd.parentnode.removechild(nd); var img = rp.parentnode.getelementsbytagname("button")[0]; if(only){ disableinput(rp); img.disabled = true; img.style.filter = 'gray'; return rp; } makedatecalendarrule(rp); _transrule_.notifymustfill(rp, {marginleft:'-13px'}); return rp; }); function makedatecalendarrule(el){ var img = el.parentnode.getelementsbytagname("button")[0]; img.setattribute("type", 'button'); var df = el.getattribute("xd:datafmt", 2); var time = df != null && df.indexof("datetime") != -1; var dtfm = null; if(time){ img.unselectable = 'on'; var validation = el.getattribute("validation", 2); if(!validation)dtfm = 'yyyy-mm-dd hh:mm:ss'; else{ eval("var obj = {" + validation + "}"); dtfm = obj['date_format']; if(dtfm==undefined) dtfm = 'yyyy-mm-dd hh:mm:ss'; } } else{ var validation = el.getattribute("validation", 2); if(!validation)dtfm = 'yyyy-mm-dd'; else{ eval("var obj = {" + validation + "}"); dtfm = obj['date_format']; if(dtfm==undefined) dtfm = 'yyyy-mm-dd'; } } wcm.trscalendar.get({ input : el, handler : img, dtfmt : dtfm, withtime : time }); } _transrule_.save("span", "fileattachment", function(nd, only) { nd.setattribute("element-type", "5"); nd.setattribute('infodoc_data', 1); if(!only){ nd.setattribute("fly-button", 1); nd.setattribute("context-menu", 1); nd.setattribute('_action', "openfileorappend"); nd.style.cursor = "pointer"; } var img = document.createelement("img"); img.src = m_srootpath + "fileattachment.gif"; img.style.width = "14px"; img.style.height = "13px"; img.align = 'absmiddle'; nd.appendchild(img); var txt = document.createelement("span"); txt.setattribute("text_body", "1"); txt.classname = 'appendix_txt'; txt.innerhtml = "\u70b9\u51fb\u6b64\u5904\u4ee5\u6dfb\u52a0\u9644\u4ef6"; nd.appendchild(txt); var txtfile = document.createelement("span"); txtfile.setattribute("text_file", "1"); txtfile.style.display = 'none'; txtfile.innerhtml = ""; var validation = nd.getattribute("validation", 2); if(validation){ eval("var obj = {" + validation + "}"); var validtype = obj['extvalid']; if(validtype) nd.setattribute("allow_ext", validtype); } nd.appendchild(txtfile); _transrule_.notifymustfill(nd, {marginleft:'-15px', margintop:'7px'}); }); var getimageattachmentrule = function(xct){ return function(nd, only) { var sp = document.createelement('span'); sp.setattribute("element-type", "5"); sp.setattribute('infodoc_data', 1); sp.setattribute("is-image", 1); if(!only){ nd.setattribute("fly-button", 1); nd.setattribute("context-menu", 1); nd.setattribute('_action', "openfileorappend"); nd.style.cursor = "pointer"; } nd.setattribute('trs_file_upload_type', "inlineimage"); var validation = nd.getattribute("validation", 2); if(validation){ eval("var obj = {" + validation + "}"); var validtype = obj['extvalid']; if(validtype){ nd.setattribute("allow_ext", validtype); }else { nd.setattribute('allow_ext', "jpg,png,gif,bmp,jpeg"); } } copyattrs(nd, sp); //sp.style.cursor = "pointer"; nd.parentnode.insertbefore(sp, nd.nextsibling); var w = nd.offsetwidth, h = nd.offsetheight; nd.parentnode.removechild(nd); var img = document.createelement('img'); img.setattribute("image_body", "1"); img.src = m_srootpath + 'spacer.gif'; img.style.width = w + 'px'; img.style.height = h + 'px'; img.style.background = "url(" + m_srootpath + "imageattachment.gif) no-repeat center center"; sp.appendchild(img); var txt = document.createelement("span"); txt.setattribute("text_body", "1"); txt.innerhtml = ' \u70b9\u51fb\u6b64\u5904\u4ee5\u6dfb\u52a0\u56fe\u7247'; txt.style.marginleft = (-w) + 'px'; txt.style.margintop = '-22px'; txt.style.height = '16px'; txt.style.lineheight = '16px'; sp.appendchild(txt); return sp; }; } var _genid = 0; function genid(){ return ++_genid; } _transrule_.save("img", "inlineimage", getimageattachmentrule('trs_is_inline_image')); _transrule_.save("img", "linkedimage", getimageattachmentrule('trs_is_linked_image')); _transrule_.save("span", "expressionbox", function(nd, only) { nd.setattribute("element-type", "101"); nd.setattribute('infodoc_data', 1); var rp = document.createelement("input"); rp.id = rp.id || 'trs-exp-' + genid(); rp.setattribute('trs_temp_id', rp.id); copyattrs(nd, rp); nd.parentnode.insertbefore(rp, nd.nextsibling); nd.parentnode.removechild(nd); only = only || nd.getattribute("xd:disableediting") == "yes"; if(only){ disableinput(rp); return rp; } return rp; }); event.observe(window, 'resize', function(){ var caches = _transrule_.getmustdocaches(); for(var i=0, n=caches.length; i"; document.body.appendchild(flybtn); var bubblepanel = new wcm.bubblepanel('bubble-panel'); function showcontextmenu(ev, tg){ var fb = $('fly-button'); if(!fb.cfg)return true; var items = pgc.flys(fb.cfg.eltype, fb.cfg.el); if(!items)return true; $('bubble-panel').innerhtml = pgc.buildmenu(items, fb.cfg.el); bubblepanel.bubble(ev.pointer, function(p){ return [p[0], p[1]+5]; }); ev.stop(); return false; } ext.get(flybtn).on('click', showcontextmenu); var lastmsm = null; function mouseoverfx(ev, tg){ if(!tg.tagname)return; var temp = finditem(tg, false, '_fxtype'); if(temp!=null)return; tg = finditem(tg, false, 'trs_temp_id'); if(lastmsm!=null && lastmsm.el!=tg){ pgc.borderfx(lastmsm.el, true); pgc.flybtnfx(null, lastmsm.el, true); lastmsm = null; } if(tg==null)return; var neltype = tg.getattribute('element-type', 2); pgc.borderfx(tg); pgc.flybtnfx(ev, tg); lastmsm = {ev:ev.browserevent, el:tg}; return true; } var extbody = ext.get(document.body); extbody.on('contextmenu', function(ev, tg){ var el = finditem(tg, false, 'context-menu'); if(!el)return true; mouseoverfx(ev, tg); var eid = el.getattribute('trs_temp_id', 2); var neltype = el.getattribute('element-type', 2); var items = pgc.flys(neltype, el); if(!items)return true; $('bubble-panel').innerhtml = pgc.buildmenu(items, el); bubblepanel.bubble(ev.pointer, function(p){ return [p[0], p[1]+5]; }); ev.stop(); return false; }); extbody.on('mousemove', function(ev, tg){ if(element.visible('bubble-panel'))return; mouseoverfx(ev, tg); }); } function regclickevent(id){ ext.get(id).on('click', function(exev, tg){ var actionitem = finditem(tg, false, '_action'); if(!actionitem)return; var action = actionitem.getattribute('_action', 2); var fn = pgc[action]; if(!fn)return; fn.apply(pgc, [exev, tg]); }); } function regmenuitemevent(id){ var lstmenuitem = null; ext.get(id).on('mousemove', function(exev, tg){ var menuitem = finditem(tg, 'menuitem'); if(!menuitem)return; if(lstmenuitem){ element.removeclassname(lstmenuitem, 'menuitem_active'); } element.addclassname(menuitem, 'menuitem_active'); lstmenuitem = menuitem; }); ext.get(id).on('mouseout', function(exev, tg){ if(lstmenuitem){ element.removeclassname(lstmenuitem, 'menuitem_active'); } lstmenuitem = null; }); } var excenter = null; function defexcenter(){ var l1 = [], l2 = [], l3 = [], l4 = [], inited; excenter = { onaftertrans : function(fn){ l1.push(fn); if(window.__loaded)fn(); }, onafterinitdata : function(fn){ l2.push(fn); if(window.__loaded)fn(); }, onaftermodify : function(fn){ l3.push(fn); }, onbeforesubmit : function(fn){ l4.push(fn); }, _aftertrans : function(){ for(var i=0,n=l1.length;i0){ alert(infos[0].warning); $(infos[0].id).focus(); } } /**--infoview_elehelper.js--**/ //\u63a7\u4ef6\u52a9\u624b array.prototype.xjoin = function(c, s, e){ var rst = []; for(var i=s; i<=e; i++)rst.push(this[i]); return rst.join(c); } var elehelper = { getfile : function(nd, bjson){ var xct = nd.getattribute("xd:xctname", 2); xct = xct ? xct.tolowercase() : ''; var arr = nd.childnodes; for(var i=0; i= 0; break; } }, getvaluefields : function(){ var arr = document.body.getelementsbytagname('*'); var rst = []; for(var i=0, n=arr.length; i', '' ].join('\n'); return loadxml(xml); }, fetchdata : function(){ // window._databeforesubmit = {}; // if(excenter._beforesubmit(window._databeforesubmit)===false)return; var doc = this.getdoc(), root = doc.documentelement; var json = elehelper.jsondata(); elehelper.jsonintoele(doc, root, json); return doc.xml; }, initdata : function(xml, bfromextranet) { var doc = loadxml(xml); if(doc == null)return null; var root = doc.documentelement; this._dealdata(document.body, root, bfromextranet); }, _dealdata : function(hnode, xnode, bfromextranet) { if(!hnode || !xnode)return; var hchilds = hnode.childnodes; for(var i=0; i v || v > this.maxvalue){ this.warning += this.warn("value_range", "msg_info", this.minvalue, this.maxvalue); return false; } return true; } if(this.obj['min'] && v < this.minvalue){ this.warning += this.warn("min", "msg_info", this.minvalue); return false; } if(this.obj['max'] && v > this.maxvalue){ this.warning += this.warn("max", "msg_info", this.maxvalue); return false; } return true; }, getmessage:function (){ var msg = ""; if(this.obj['value_range']){ return this._info("value_range", "msg_info", this.minvalue, this.maxvalue); } if(this.obj['min']){ msg += this._info("min", "msg_info", this.minvalue); } if(this.obj['max']){ msg += this._info("max", "msg_info", this.maxvalue); } return msg; }, _check : function(){ if(this.obj['value_range']){ var arr = this.obj['value_range'].split(","); this.minvalue = this.parsemethod(arr[0]) || number.negative_infinity; this.maxvalue = this.parsemethod(arr[1]) || number.positive_infinity; } if(this.obj['min']){ this.minvalue = this.parsemethod(this.obj['min']) || number.negative_infinity; } if(this.obj['max']){ this.maxvalue = this.parsemethod(this.obj['max']) || number.positive_infinity; } return true; } }); var strvdtor = defclass(); object.extend(strvdtor.prototype, absvdtor.prototype); object.extend(strvdtor.prototype, { initialize : function(_field) { absvdtor.prototype.initialize.call(this, _field); if(!this._check()) return false; }, method : function(){ var len = ($$f(this.el)||'').bytelength(); if(this.obj['length_range']){ var lengthrange = this.obj['length_range'].split(','); if(lengthrange[0] > len || len > lengthrange[1]){ this.warning += this.warn("length_range", "msg_info", lengthrange[0], lengthrange[1]); return false; } return true; } if(this.obj['min_len'] && len < this.minlen){ this.warning += this.warn("min_len", "msg_info", this.minlen); return false; } if(this.obj['max_len'] && len > this.maxlen){ this.warning += this.warn("max_len", "msg_info", this.maxlen); return false } return true; }, getmessage : function(){ var msg = ""; if(this.obj['len_range']){ return this._info("length_range", "msg_info", this.minlen, this.maxlen); } if(this.obj['min_len']){ msg += this._info("min_len", "msg_info", this.minlen); } if(this.obj['max_len']){ msg += this._info("max_len", "msg_info", this.maxlen); } if(msg == '' && validationhelper.isrequired(this.obj, this.el)){ msg = this._info("required", "msg_info"); } return msg; }, _check : function(){ if(this.obj['len_range']){ var arr = this.obj['len_range'].split(","); this.minlen = parseint(arr[0]) || 0; this.maxlen = parseint(arr[1]) || number.positive_infinity; } if(this.obj['min_len']){ this.minlen = parseint(this.obj['min_len']) || 0; } if(this.obj['max_len']){ this.maxlen = parseint(this.obj['max_len']) || 0; } return true; } }); var datevdtor = defclass(); object.extend(datevdtor.prototype, absvdtor.prototype); object.extend(datevdtor.prototype, { formatregexp : /^(yy|yyyy)(-|\/)(m{1,2})(\2)(d{1,2})(\w+(h{1,2})(:)(m{1,2})((\8)(s{0,2}))?)?$/, dateregexp : /^(\d{2}|\d{4})(-|\/)(\d{1,2})(\2)(\d{1,2})(\w+(\d{1,2})(:)(\d{1,2})((\8)(\d{0,2}))?)?$/, initialize : function(_field) { absvdtor.prototype.initialize.call(this, _field); if(!this._check()) return false; }, method : function(){ var sformat = this.obj['date_format']; if(!sformat){ var type = this.obj['type']; if(type == 'date'){ sformat = "yyyy-mm-dd"; }else if(type == 'datetime'){ sformat = "yyyy-mm-dd hh:mm:ss"; } } var stemp = sformat.replace(/yy|mm|dd|hh|ss/gi, "t").replace(/m|d|h|s/ig, '\\d{1,2}').replace(/t/ig, '\\d{2}'); var oregexp = new regexp("^"+stemp+"$"); var svalue = $$f(this.el) || ''; if(!oregexp.test(svalue)){ this.warning = "\u6ca1\u6709\u5339\u914d\u65e5\u671f\u683c\u5f0f:" + sformat; return false; } var matchs = svalue.match(this.dateregexp); if(!matchs){ this.warning = "\u6ca1\u6709\u5339\u914d\u65e5\u671f\u683c\u5f0f:" + sformat;; return false; } var year = parseint(matchs[1], 10); var month = parseint(matchs[3], 10); var day = parseint(matchs[5], 10); var hour = parseint(matchs[7], 10); var minute = parseint(matchs[9], 10); var second = parseint(matchs[12], 10); if(month < 1 || month > 12){ this.warning = "\u6708\u4efd\u5e94\u8be5\u4e3a1\u523012\u7684\u6574\u6570"; return false; } if (day < 1 || day > 31){ this.warning = "\u6bcf\u4e2a\u6708\u7684\u5929\u6570\u5e94\u8be5\u4e3a1\u523031\u7684\u6574\u6570"; return false; } if ((month==4 || month==6 || month==9 || month==11) && day==31){ this.warning = "\u8be5\u6708\u4e0d\u5b58\u572831\u53f7"; return false; } if (month==2){ var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0)); if (day>29){ this.warning = "2\u6708\u6700\u591a\u670929\u5929"; return false; } if ((day==29) && (!isleap)){ this.warning = "\u95f0\u5e742\u6708\u624d\u670929\u5929"; return false; } } if(hour && hour<0 || hour>23){ this.warning = "\u5c0f\u65f6\u5e94\u8be5\u662f0\u523023\u7684\u6574\u6570"; return false; } if(minute && minute<0 || minute>59){ this.warning = "\u5206\u5e94\u8be5\u662f0\u523059\u7684\u6574\u6570"; return false; } if(second && second<0 || second>59){ this.warning = "\u79d2\u5e94\u8be5\u662f0\u523059\u7684\u6574\u6570"; return false; } return true; }, getmessage : function(){ var sformat = this.obj['date_format']; if(!sformat){ var type = this.obj['type']; if(type == 'date'){ sformat = "yyyy-mm-dd"; }else if(type == 'datetime'){ sformat = "yyyy-mm-dd hh:mm:ss"; } } return string.format("\u65e5\u671f\u683c\u5f0f\u4e3a\uff1a{0}" ,sformat); } }); function _valid(ev){ var el = this; var rst = validationhelper.valid(el); if(rst==null)return; if(window.bshowtitle) el.title = !rst.isvalid ? rst.warning : rst.message; element[rst.isvalid?'removeclassname':'addclassname'](el, 'valid_error'); } function initevents(){ var doms = [], tags = ["input", "textarea", "select"]; for (var i = 0; i < tags.length; i++){ var eles = document.body.getelementsbytagname(tags[i]); doms.push.apply(doms, $a(eles)); } for(var i = 0; i < doms.length; i++){ var dom = doms[i], f = (window.onvalid||_valid).bind(dom); if(dom.getattribute("validation", 2)==null)continue; event.observe(dom, 'change', f); event.observe(dom, 'blur', f); event.observe(dom, 'focus', f); } } excenter.onafterinitdata(function(){ var doms = [], tags = ["input", "textarea", "select"]; for (var i = 0; i < tags.length; i++){ var eles = document.body.getelementsbytagname(tags[i]); doms.push.apply(doms, $a(eles)); } for(var i = 0; i < doms.length; i++){ var dom = doms[i]; var v = dom.getattribute("validation", 2), pt, tmp, fmt; var pt = dom.getattribute("pattern", 2); if(pt=='string' && (fmt = dom.getattribute("xd:datafmt", 2))!=null){ if(fmt.indexof('"number"')!=-1) pt = fmt.indexof('numdigits:auto')!=-1? 'float' : 'integer'; } if(v==null || v.trim().length<=0){ if(pt==null || pt=='string')continue; dom.setattribute("validation", 'type:\'' + pt + '\''); }else if(pt!=null && pt!='string'){ if(v.indexof('type:')!=-1){ v = v.replace(/(^|,)type:[^,]*(,|$)/, '$1type:\'' + pt + '\'$2'); }else{ v = v + ',type:\'' + pt + '\''; } dom.setattribute("validation", v); } (window.onvalid||_valid).apply(dom, []); } initevents(); }); function _validerror(){ //donothing } document.getelementsbyclassname = function(cls, p) { if(p && p.getelementsbyclassname) return p.getelementsbyclassname(cls); var arr = ($(p) || document.body).getelementsbytagname('*'); var rst = []; var regexp = new regexp("(^|\\s)" + cls + "(\\s|$)"); for(var i=0,n=arr.length;i