// i-coms getjs.php create at 2007 modified at 2009 var V4_HOST = "/"; var CMNT_HOST = "/"; var XML_CGI = "/cgi-bin/comment/page_xml.cgi?type="; var VIEW_CGI = "/comment/comment4.html"; var DEPOSIT_CGI = "/comment/skin/deposit.html"; var POST_CGI = "/cgi-bin/comment/post.cgi"; var PROXY_CGI = "/cgi-bin/comment/xmlhttp_proxy.cgi?url="; var XML_PROXY = ""; var SKIN_PATH = "/comment/skin"; var XML_PATH = "/comment/xml"; var ERRPR_PAGE = "/comment/error.html"; var PVLOG_PAGE = "/comment/log.html"; var AD_CONFIG = "/comment/adconfig.xml"; var REPLY_CONFIG = "/comment/reply.xml"; // const values var STRIP_RATE = 0.8; // 20% qreply var HASH_GENE_1 = 128; var HASH_GENE_2 = 255; var MSGS_PERPAGE = 20; var MSGS_HOTCMSG = 20; var DEFAULT_RETLEN = 80; var RETRY_DELAY = 1000; // 1s var DEFAULT_SKIN = "default"; var FLOOD_POST = "cf_post"; var FLOOD_QREPLY = "cf_qreply"; var POST_PREVIEW = "ppv"; var JS_PREVIEW = "jsppv"; var HISTORY_LIMIT = 40; var NOTIFIED_LIMIT = 10; var HISTORY_LIST = "v4_history"; var FOCUS_LIST = "v4_focus"; var TOP_FLAG = "TOP_FLAG"; var HOT_FLAG = "HOT_FLAG"; var REPLY_FLAG = "REPLY_FLAG"; var ENABLE_CACHE = "enable_cache"; // system defines var M_TEMP=2, M_HIDE=4, M_CHECK=8, M_WAIT=16, M_PASS=32, M_NICE=64; var N_HIDE=1, N_NOTHOT=2, N_VALID=3, N_ATTENTION=4, N_IMPORTANT=5; var LIST_STRIP=0, LIST_ALL=1, LIST_NICE=2, LIST_HOT=3, LIST_REPLY=4, LIST_VOTE=5; var NEWS_MODE=0, GROUP_MODE=1; var SORT_DESC="desc", SORT_ASCE="asce", SORT_DEFAULT=""; // page type defines var TYPE_CHANNEL = "P_TYPE_CHANNEL"; var TYPE_HOTNEWS = "P_TYPE_HOTNEWS"; var TYPE_NEWS = "P_TYPE_NEWS"; var TYPE_GLIST = "P_TYPE_GLIST"; var TYPE_COUNT = "P_TYPE_COUNT"; var TYPE_RATING = "P_TYPE_RATING"; var TYPE_TOPCMSG = "P_TYPE_TOPCMSG"; var TYPE_CMSGLIST = "P_TYPE_CMSGLIST"; var TYPE_CMSG = "P_TYPE_CMSG"; var TYPE_CMSG_JS = "P_TYPE_CMSG_JS"; var TYPE_HOTPOST = "P_TYPE_HOTPOST"; var TYPE_CMSG_PPV = "P_TYPE_CMSGLIST_PPV"; var TYPE_USERPOST = "P_TYPE_USERPOST"; // xmlhttp method var XMLHTTP_EXIST = "XMLHTTP_EXIST"; var XMLHTTP_TEXT = "XMLHTTP_TEXT"; var XMLHTTP_XML = "XMLHTTP_XML"; // for IE5 var undefined; //////////////////////////////////////////////////////////////////////////////// // convert a single digit (0 - 16) into hex function _hex( i ) { return ( "0123456789ABCDEF".substring(i,i+1) ); } // Convert a 8bit number to hex function to_hex( i ) { var c1 = _hex( (0x0000f0&i)>>4 ); var c2 = _hex( (0x00000f&i)>>0 ); if ( c1 != "0" ) { return (c1+c2); } else { return c2; } } // signed int to unsigned int function to_unsigned( i ) { if ( i < 0 ) { return ( i + 4294967296 ); } else if ( i >= 4294967296 ) { return ( i - 4294967296 ); } else { return i; } } // parse to integer function parse_int( i, default_value ) { i = parseInt( i ); if ( !isNaN(i) ) { return i; } if ( default_value!=undefined && !isNaN(default_value) ) { return default_value; } return 0; } // return safe string function parse_str( str ) { if ( str == undefined ) { return ""; } else { return str; } } //////////////////////////////////////////////////////////////////////////////// // string length function strlen( str ) { if ( str==null || str=="" ) { return 0; } var newstr = new String( str ); return newstr.length; } // trim string function trim( s ) { if ( s==null || s=="" ) { return ""; } var Str = new String( s ); var newstr = Str.replace( /^\s*/, "" ); return ( newstr.replace(/\s*$/,"") ); } // substring function substr( str, len ) { if ( str==null || str=="" ) { return ""; } var buf = new String( str ); return ( str.substr(0,len) ); } // uri encode function uri_encode( str ) { if ( str==null || str=="" ) { return ""; } var toescape = ";/?:@&=+ \"#%<>'`[],~!$^(){}|\\"; var newstr="", chr=""; for ( var i=0; i= ret_len ) { pos = 0; if ( c=="," || c=="!" ) { truncated += "\n"; // for IE } else { truncated += " "; } } } return truncated; } // strip repeated
s function strip_enter( str ) { var strip_str = ""; while( strip_str != str ) { strip_str = str; str = strip_str.replace( /

/ig, "
" ); } return str; } // escape xml string function escape_xml( str, ret_len ) { if ( str==undefined || str=="" ) { return ""; } if ( ret_len==undefined || ret_len==null ) { ret_len = DEFAULT_RETLEN; } // strip repeated
str = strip_enter( str ); // force return str = str.replace( /
/ig, "\n" ); // hide
str = force_return( str, ret_len ); // escape xml str = str.replace( /&/g, "&" ); str = str.replace( //g, ">" ); str = str.replace( /'/g, "'" ); str = str.replace( /"/g, """ ); str = str.replace( /\t/g, "    " ); str = str.replace( /\n/g, "
" ); // restore
return str; } // escape news title function escape_title( title ) { if ( title==undefined || title=="" ) { return ""; } var escaped_tiele = title.replace( /\'/g, "'" ); escaped_tiele = escaped_tiele.replace( /\"/g, """ ); escaped_tiele = escaped_tiele.replace( /[<]([^>]*)[>]/g, "" ); // strip html return escaped_tiele; } // set cookie function set_cookie( name, value, expires ) { if ( expires!=undefined && expires!="" ) { document.cookie = ( name+"="+value+";expires="+expires ); } else { document.cookie = ( name+"="+value ); } } // get cookie by name function get_cookie( cookie ){ var cookies = document.cookie; var clist = cookies.split(";"); for ( var i=0; i= 0 ) { return true; } else { return false; } } // check is Mozilla/FireFox function is_mozilla() { if ( navigator.userAgent.toLowerCase().indexOf('gecko') >= 0 ) { return true; } else { return false; } } // check is Opera function is_opera() { if ( navigator.userAgent.toLowerCase().indexOf('opera') >= 0 ) { return true; } else { return false; } } // check is Safari function is_safari() { if ( navigator.userAgent.toLowerCase().indexOf('safari') >= 0 ) { return true; } else { return false; } } // doc.getElementById function obj( id, doc ) { if ( id == "" ) { return null; } if ( doc==undefined || doc=="" ) { return document.getElementById( id ); } else { return doc.getElementById( id ); } } // get objects list by tage name function tag_objs( tag, name ) { if ( tag=="" || name=="" ) { return null; } var elem = document.getElementsByTagName( tag ); var list = new Array(); for( i=0,iarr=0; i0 || Filter.vote>0 ) { return xmlhttp_async( cmsglist_cgi(Filter,count), callback ); } else { return xmlhttp_async( cmsglist_xml(Filter,pages), callback, cmsglist_cgi(Filter,count) ); } } // load topcmsg list xml, output by renderer() function load_topcmsg( channel, newsid, group, renderer ) { var callback = function( xml ) { renderer( parse_cmsg_list(xml) ); }; return xmlhttp_async( topcmsg_xml(channel,newsid,group), callback, topcmsg_cgi(channel,newsid,group) ); } // post preview cgi url function ppv_cgi( Filter, ppv ) { return ( XML_CGI + TYPE_CMSG_PPV + "&channel=" + uri_encode(Filter.channel) + "&newsid=" + uri_encode(Filter.newsid) + "&" + POST_PREVIEW + "=" + ppv ); } // load post preview cmsglist xml, parse by renderer() function load_ppv( Filter, ppv, renderer ) { var callback = function( xml ) { renderer( parse_cmsg_list(xml) ); }; return xmlhttp_async( ppv_cgi(Filter,ppv), callback ); } // cmsgitem format mask function cmsg_mask( text, News ) { if ( News.n_newsid==undefined || News.n_split=="" || News.n_format=="" ) { return text; // keep } if ( News.n_fields <= 0 ) { return text; // keep } // mask var fields_list = text.split( News.n_split ); if ( fields_list.length < News.n_fields ) { return text; // keep } var new_cmsg = News.n_format; for ( var i=1; i<=News.n_fields; ++i ) { new_cmsg = replace_var( new_cmsg, i, fields_list[i-1] ); } return new_cmsg; } //////////////////////////////////////////////////////////////////////////////// // cmsgitem cgi url function cmsgitem_cgi( channel, newsid, rid ) { return ( XML_CGI + TYPE_CMSG + "&channel=" + uri_encode(channel) + "&newsid=" + uri_encode(newsid) + "&rid=" + rid ); } // load cmsgitem xml, output by renderer() function load_cmsgitem( channel, newsid, rid, renderer ) { var callback = function( xml ) { renderer( parse_cmsg(xml) ); }; return xmlhttp_async( cmsgitem_cgi(channel,newsid,rid), callback ); } //////////////////////////////////////////////////////////////////////////////// // cmsg count xml function count_xml( Filter ) { if ( Filter.rid>0 || Filter.vote>0 ) { return null; } return ( XML_PATH + "/" + uri_encode(Filter.channel) + "/" + hash_path(Filter.newsid) + "/" + uri_encode(Filter.newsid) + "_count_" + Filter.group + ".xml" ); } // cmsg count cgi url, if count xml non-existent function count_cgi( Filter ) { return ( XML_CGI + TYPE_COUNT + "&channel=" + uri_encode(Filter.channel) + "&newsid=" + uri_encode(Filter.newsid) + "&group=" + Filter.group + "&rid=" + Filter.rid + "&vote=" + Filter.vote ); } // parse xml to Count object function parse_count( xml ) { if ( xml == null ) { return null; } var node = xml_node( xml, "count" ); var Count = new Object(); Count.c_total = parse_int( xml_node_attr(node,"total"), -1 ); Count.c_show = parse_int( xml_node_attr(node,"show"), -1 ); Count.c_strip = parse_int( xml_node_attr(node,"strip"), -1 ); Count.c_nice = parse_int( xml_node_attr(node,"nice"), -1 ); Count.c_count = parse_int( xml_node_attr(node,"count"), -1 ); // old format data if ( Count.c_total<0 || Count.c_show<0 ) { Count.c_total = Count.c_show = parse_int( xml_node_attr(node,"all"), -1 ); } return Count; } // load count xml, output by renderer() function load_count( Filter, renderer ) { var callback = function( xml ) { renderer( parse_count(xml) ); }; if ( Filter.rid>0 || Filter.vote>0 ) { return xmlhttp_async( count_cgi(Filter), callback ); } else { return xmlhttp_async( count_xml(Filter), callback, count_cgi(Filter) ); } } //////////////////////////////////////////////////////////////////////////////// // rating xml url function rating_xml( channel, newsid, mid ) { if ( mid > 0 ) { return null; } return ( XML_PATH + "/" + uri_encode(channel) + "/" + hash_path(newsid) + "/" + uri_encode(newsid) + "_rating.xml" ); } // rating cgi url, if rating xml non-existent, or cmsgitem's rating function rating_cgi( channel, newsid, mid ) { return ( XML_CGI + TYPE_RATING + "&channel=" + uri_encode(channel) + "&newsid=" + uri_encode(newsid) + "&mid=" + mid ); } // parse xml to Rating object function parse_rating( xml ) { if ( xml == null ) { return null; } var Rating = new Object(); var node_list = xml_node_list( xml, "vote" ); for ( var i=0; i 0 ) { return xmlhttp_async( rating_cgi(channel,newsid,mid), callback ); } else { return xmlhttp_async( rating_xml(channel,newsid,mid), callback, rating_cgi(channel,newsid,mid) ); } } // read qreply option name by score function qreply_option( qreply, score ) { if ( parse_int(score) <= 0 ) { return ""; } var name = qreply[score]; if ( name == undefined ) { return ""; } else { return name; } } //////////////////////////////////////////////////////////////////////////////// // parse xml node to AdItem object function parse_ad_item( node ) { var AdItem = new Object(); AdItem.channel = xml_node_attr( node, "channel" ); AdItem.newsid = xml_node_attr( node, "newsid" ); AdItem.position = xml_node_data( node, "position" ); AdItem.type = xml_node_data( node, "type" ); AdItem.browser = xml_node_data( node, "browser" ); AdItem.from = xml_node_data( node, "from" ); AdItem.to = xml_node_data( node, "to" ); AdItem.content = xml_node_data( node, "content" ); return AdItem; } // parse xml to AdItem object list function parse_ad_list( xml ) { if ( xml == null ) { return null; } var node_list = xml_node_list( xml, "aditem" ); var AdList = new Array(); for ( var i=0; i to.getTime() ) { continue; } } obj(ad.position).innerHTML = ad.content; show_obj( obj(ad.position) ); } } //////////////////////////////////////////////////////////////////////////////// // parse xml node to Reply object function parse_reply_item( node ) { var Reply = new Object(); Reply.suite = xml_node_attr( node, "suite" ); var node_list = xml_node_list( node, "reply_item" ); for ( var i=0; i0 && option!=null ) { Reply[ score ] = option; } } return Reply; } // parse xml to Reply object list function parse_reply_list( xml ) { if ( xml == null ) { return null; } var node_list = xml_node_list( xml, "reply" ); var ReplyList = new Array(); for ( var i=0; i" + name.substr(10) + "" + suffix ); // } else if ( name.search(/wc:.*/i) != -1 ) { // show = ( "Woocall用户 " + name.substr(3) + "" + suffix ); // // uc messenger user // } else if ( name.search(/UC用户:.*/i) != -1 ) { // show = ( "UC用户 " + name.substr(5) + "" + suffix ); // } else if ( name.search(/um:.*/i) != -1 ) { // show = ( "UC用户 " + name.substr(3) + "" + suffix ); // } else { // if ( disable_search!=undefined && disable_search!="" ) { // show = ( "网友 " + name + "" + suffix ); // } else { // show = ( "网友 " + name + "" ); // } // } // return show; // anonymous user if ( name == "" ) { show = ( "网友" + suffix ); // mobile user } else if ( name=="手机用户" || name.search(/wap:.*/i)!=-1 ) { show = area + "手机用户 手机看新闻"; // woocall chat user } else if ( name.search(/Woocall用户:.*/i) != -1 ) { show = ( "Woocall用户 " + name.substr(10) + "" + suffix ); } else if ( name.search(/wc:.*/i) != -1 ) { show = ( "Woocall用户 " + name.substr(3) + "" + suffix ); } else { if ( disable_search!=undefined && disable_search!="" ) { show = ( "网友 " + name + "" + suffix ); } else { show = ( "网友 " + name + "" ); } } return show; } //////////////////////////////////////////////////////////////////////////////// // check post flood function check_post( content ) { var c = content.substr( 0, 100 ); if ( get_cookie(FLOOD_POST) == c ) { return false; } else { set_cookie( FLOOD_POST, c ); return true; } } // check quick reply flood function check_qreply( rid ) { if ( get_cookie(FLOOD_QREPLY) == rid.toString() ) { return false; } else { set_cookie( FLOOD_QREPLY, rid.toString() ); return true; } } //////////////////////////////////////////////////////////////////////////////// // load history from cookie function history_cookie( cookie ) { // Entry = channel:newsid:group:count:focus:notified|... var history = new Array(); var list = get_cookie(cookie).split( "|" ); for ( var i=0; i= HISTORY_LIMIT ) { break; } if ( list[i].focus>=1 && list[i].notified >= NOTIFIED_LIMIT ) { continue; } if ( list[i].channel!=Entry.channel || list[i].newsid!=Entry.newsid ) { cookie += list[i].channel + ":" + list[i].newsid + ":" + list[i].group + ":" + list[i].count + ":" + list[i].focus + ":" + list[i].notified+ "|";; } } set_cookie( name, cookie, "Saturday,30-December-2017 16:00:00 GMT" ); } // append focus entry function append_focus( Filter, Count ) { var Entry = new Object(); Entry["channel"] = Filter.channel; Entry["newsid"] = Filter.newsid; Entry["group"] = Filter.group; Entry["count"] = Count.c_strip; Entry["focus"] = 1; Entry["notified"] = 0; save_history( FOCUS_LIST, Entry ); } // append history entry function append_history( Filter, Count ) { var Entry = new Object(); Entry["channel"] = Filter.channel; Entry["newsid"] = Filter.newsid; Entry["group"] = Filter.group; Entry["count"] = Count.c_strip; Entry["focus"] = 0; Entry["notified"] = 0; save_history( HISTORY_LIST, Entry ); // check focus list var list = history_cookie( FOCUS_LIST ); for ( var i=0; i"+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ ""; // post document.cmnt_post_form.channel.value = Cmsg.m_channel; document.cmnt_post_form.newsid.value = Cmsg.m_newsid; document.cmnt_post_form.content.value = Cmsg.m_content; document.cmnt_post_form.vote.value = parse_int( Cmsg.m_vote ); document.cmnt_post_form.qvote.value = parse_int( Cmsg.m_qvote ); document.cmnt_post_form.rid.value = parse_int( Cmsg.m_rid ); document.cmnt_post_form.user.value = parse_str( Cmsg.m_user ); document.cmnt_post_form.pass.value = parse_str( Cmsg.m_pass ); document.cmnt_post_form.config.value = parse_str( Cmsg.m_config ); document.cmnt_post_form.title.value = parse_str( Cmsg.n_title ); document.cmnt_post_form.url.value = parse_str( Cmsg.n_url ); document.cmnt_post_form.submit(); // update js post preview cookie // cookie format: channel|newsid|user|datetime|content var cmsg_datetime = datetime_now(); var preview_cookie = new Array(); preview_cookie[0] = Cmsg.m_channel; preview_cookie[1] = Cmsg.m_newsid; preview_cookie[2] = escape( Cmsg.m_user ); preview_cookie[3] = cmsg_datetime; preview_cookie[4] = escape( Cmsg.m_content ); set_cookie( JS_PREVIEW, preview_cookie.join("|") ); } // up function cmnt_postup( channel, newsid, id ) { var Cmsg = new Object(); Cmsg.m_channel = trim( channel ); Cmsg.m_newsid = trim( newsid ); Cmsg.m_rid = id; Cmsg.m_content = "顶"; Cmsg.m_vote = 1; cmnt_post( Cmsg ); } // up function cmnt_qvote( channel, newsid, vote ) { var Cmsg = new Object(); Cmsg.m_channel = trim( channel ); Cmsg.m_newsid = trim( newsid ); Cmsg.m_qvote = vote; cmnt_post( Cmsg ); } // js post preview function cmnt_preview( channel, newsid, CmsgList ) { var post_preview = get_cookie( JS_PREVIEW ); if ( post_preview == "" ) { return CmsgList; } // cookie format: channel|newsid|user|datetime|content var preview = post_preview.split( "|", 5 ); if ( preview.length < 5 ) { return CmsgList; } if ( channel!=preview[0] || newsid!=preview[1] ) { return CmsgList; } var PreviewCmsg = new Object(); // read PreviewCmsg["m_channel"] = preview[0]; PreviewCmsg["m_newsid"] = preview[1]; PreviewCmsg["m_user"] = unescape( preview[2] ); PreviewCmsg["m_datetime"] = preview[3]; PreviewCmsg["m_content"] = unescape( preview[4] ); // blank PreviewCmsg["m_ip"] = ""; PreviewCmsg["m_area"] = ""; PreviewCmsg["m_vote"] = 0; PreviewCmsg["m_config"] = ""; PreviewCmsg["m_id"] = 0; PreviewCmsg["m_rid"] = 0; PreviewCmsg["m_rank"] = 0; PreviewCmsg["m_status"] = M_PASS; // return CmsgList.splice( 0, 0, PreviewCmsg ); delete PreviewCmsg; return CmsgList; } //////////////////////////////////////////////////////////////////////////////// // load cmsglist xml, old version function load_cmsglist_v3( channel, newsid, group, nice, rid, page, pages, renderer ) { var list = 0; if ( nice > 0 ) { list = LIST_NICE; } else { list = LIST_ALL; } var Filter = create_filter( channel, newsid, group, list, rid, 0, page ); return load_cmsglist( Filter, renderer, pages, 0/*count*/ ); } // load news xml, old version function read_news( channel, newsid ) { var url = news_xml( channel, newsid ); if ( !url_exist(url) ) { url = news_cgi( channel, newsid ); } var xml = xmlhttp_request( url, XMLHTTP_XML ); if ( xml == null ) { return null; } return parse_news( xml ); } // load count xml, old version function load_count_v3( channel, newsid, group, nice, rid, renderer ) { var list = 0; if ( nice > 0 ) { list = LIST_NICE; } else { list = LIST_ALL; } var Filter = create_filter( channel, newsid, group, list, rid ); return load_count( Filter, renderer ); } // load count xml, old version function read_count( channel, newsid, group, nice, rid ) { var list = 0; if ( nice > 0 ) { list = LIST_NICE; } else { list = LIST_ALL; } var Filter = create_filter( channel, newsid, group, list, rid ); // load var url = count_xml( Filter ); if ( !url_exist(url) ) { url = count_cgi( Filter ); } var xml = xmlhttp_request( url, XMLHTTP_XML ); if ( xml == null ) { return null; } return parse_count( xml ); } // comment entry url, old version function view_url( channel, newsid, style, nice, rid, page, face, hot ) { var list = 0; if ( nice > 0 ) { list = LIST_NICE; } else { list = LIST_ALL; } var Filter = create_filter( channel, newsid, style, list, rid, 0, page ); return cmnt_url( Filter, face ); } style, list, rid, 0, page ); return cmnt_url( Filter, face ); }