//============================================ // SLS common data // // Color // Language // Icon //============================================ /* */ var isNN = !document.all; var CURRENT_TIME = Math.floor( ( new Date() ).getTime() / 1000 ); var THREAD_LIST = {}; var GROUP_LIST = {}; var THREAD_NUMBER = {}; var GROUP_NUMBER = {}; var HEAD_TOPIC = 0; var HEAD_GROUP = 0; var CALL_GROUP = 0; var TOTAL_THREAD = 0; var TOTAL_GROUP = 0; var SPAN_THREAD = 0; var SPAN_GROUP = 0; var SEND_URL = ""; var COLOR_LIST = ["black","gray","09f","blue","brown","darkorange","red","0c0","green","fuchsia","c06"]; var SEARCH_KEY = ""; var QUOTE_TEXT = ""; var RESPONSE_LIST = { MODE : 'view' }; var CONFIG_LIST = {}; //------------------- for tree open var HEADer_TAG = ""; var DIR_ICON = "../FaceBall/"; // Icon folder var ICON_LIST = { Basic : "普通", Basic2 : "普通2", AseAse : "あせあせ", VeryHot : "あちー", IraIra : "イライラ", Appare : "天晴れ", Yeah : "イェ~", IjiIji : "いじいじ", LetsGo : "いってみよー", Kya : "いやんっ☆", Wink : "ウインク", Uu : "うぅ…", DevilStick : "ウケケケ", UruUru : "うるうる", UreshiNaki : "嬉し泣き", UnUn : "うんうん", Uuun : "うぅぅむ", Eee : "えぇぇ", TereTere : "えへへ", OiOi : "おいおい", HeyYou : "おいっ!", ComeHere : "おいで~", Vomit : "おえっ", Ooi : "お~い", Okaimono : "お買い物", OSu : "押忍!", Osumashi : "おすまし", TakeCare : "お大事に", FullMoon : "お月見", OK : "おっけー", MoguMogu : "おにぎり", Onegai : "おねがい", Bath : "おふろ", OhMyGod : "Oh My God !", ZZZ : "おやすみ", GodDaikoku : "神様:大黒天", GodYebisu : "神様:恵比寿天", Gaan : "がびーん", Kabuto : "兜", Singing : "からおけ♪", BeerGlass : "かんぱーい☆", Guiter : "ギター", Kyahaha : "きゃはは", CareerWoman : "キャリアウーマン", Candle : "キャンドル", Gyoeee : "ぎょぇ", Gyott : "ぎょっ", KyoroKyoro : "きょろきょろ", KiraKira : "キラキラ☆", Sneeze : "くしゃみ", Kusun : "くすん", EatUp : "食った食った", Cracker : "クラッカー", Xmas : "クリスマス", Sniff : "くんくん", Mobile : "携帯電話", MobileMail : "携帯メール", Working : "工事中", Coffee : "珈琲", Crying : "号泣", Lunch : "ごはん♪", KonRan : "混乱", Sarfing : "サーフィン", Satt : "さっ", Soccer : "サッカー", BuruBuru : "さぶー", Monkey : "さるっ", Jee : "じーっ", Shiin : "しーん…", GoOut : "しっしっ", Writing : "書道", Swimming : "水泳", Ski : "スキー", Shawer : "シャワー", Sooo : "そぉー…", Cleaning : "そうじ♪", AreYouOK : "大丈夫?", Kite : "凧上げ", TakoYaki : "タコ焼き", Tabako : "たばこ", BirthdayCake : "たんじょうび", IeIe : "違うのに…", ChiChiChi : "ちっちっち", NoNo : "ちゃうちゃう", Fishing : "釣り", TsunTsun : "つんつん", Tennis : "テニス", SunShine : "天気:晴", Kumori : "天気:曇", Rain : "天気:雨", Kaminari : "天気:雷", SnowMan : "天気:雪", Angel : "天使", Dote : "どてっ", Flying : "とべ~", Secret : "ないしょ", NaniNani : "なに ??", NamNam : "なむなむ", Niyari : "ニヤリ", Goo : "ね♪", NemuNemu : "ねむねむ", NoriNori : "のりのり", LookOut : "パーンチ", Hai : "はい!", Motorcycle : "バイク", Running : "はしれ~", PC : "パソコン", Hakushu : "ぱちぱちぱち", Nanto : "ハッ", HanaKuso : "はなくそ", Bouquet : "花束", Nosebleed : "鼻血", BunnyGirl : "バニーガール", Hanetuki : "羽根突き", Hansei : "反省", ooo : "ヒィィィ", Peace : "ピース♪", Hu : "ふー", Pool : "プール", Poogh : "ぷっ", Hospital : "病院", HulaDance : "フラダンス", PunPun : "ぷんぷん", Akanbe : "べぇ", PekoPeko : "ぺこり", Hensou : "変装", Whistle : "ホイッスル", Boat : "ボート", HouHou : "ほうほう", Ohoho : "ホーッホッホ", 'Poke-' : "ぽけー", Hazukashi : "ポッ", 'HoHo-' : "ほほーっ", MushiMegane : "間違い発見", MaJiDe : "まじで?", Witch : "魔女", ByeBye : "またね~", KuruKuru : "まわる~", Mukee : "ムキー", Mufu : "むふ♪", MemoMemo : "メモメモ", SweetPoteto : "焼き芋", Yodare : "よだれ", Roger : "らじゃ♪", LoveLetter : "ラブレター", Cooking : "料理", Trip : "旅行", Waai : "わぁい", Waan : "わーん", WakuWakuWaku : "わくわく", Forgot : "忘れた…", Hatena : "わたし?", Nnnto : "んーと", HoodMouse : "頭巾:ねずみ", HoodCow : "頭巾:うしくん", HoodTiger : "頭巾:とら", HoodRabbit : "頭巾:うさぎ", HoodDragon : "頭巾:ドラゴン", HoodSnake : "頭巾:へび", HoodHorse : "頭巾:うま", HoodSheep : "頭巾:ひつじ", HoodMonkey : "頭巾:えてこう", HoodCock : "頭巾:にわとり", HoodDog : "頭巾:いぬ", HoodBoar : "頭巾:いのしし", HoodDolphin : "頭巾:イルカ", HoodFrog : "頭巾:かえる", HoodFox : "頭巾:キツネ", HoodGiraffe : "頭巾:キリン", HoodBear : "頭巾:くま", HoodElephant : "頭巾:ぞう", HoodRaccoon : "頭巾:タヌキ", HoodCat : "頭巾:ねこ", HoodPanda : "頭巾:パンダ", HoodPig : "頭巾:ぶた", HoodPenguin : "頭巾:ペンギン", HoodLion : "頭巾:ライオン", FluitStrawberry : "果物:イチゴ", FluitSuika : "果物:スイカ", FluitOrange : "果物:みかん", FluitMelon : "果物:メロン", FluitApple : "果物:りんご", PairKiss : "∞ちゅっ♪", PairNamida : "∞友よ…(涙)", PairNakayoshi : "∞なかよし", PairPunch : "∞ぱーんち", PairYeah : "∞ゆびきり", PairYoshiYoshi : "∞よしよし" }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // window double click //_________________________________________ document.ondblclick = function() { document.getElementById( "FLOAT_MENU" ).style.display = "block"; with( isNN ? CATCH_AXIS : event ){ callFloatBox( "FLOAT_MENU", document.body.scrollLeft + x -20, document.body.scrollTop + y -20 ); } } //=================================== // window onresize //=================================== window.onresize = function(){ var getHead = parseInt( document.getElementById( 'THREAD_SELECT' ).value ); if( !isNaN( getHead ) && 0 <= getHead ){ viewThread( getHead ); } }; //=============================== // change search //=============================== /* function changeSearch ( key, val ) { var getSearch = location.search; location.search = "?" + ( getSearch.replace( /^(\?|&)/, "" ) + "&" ).replace( new RegExp( key+"=[^&]*&", "g" ), "" ) + key + "=" + val; } */ //============================== // access //============================== function submitSLS( searchList ){ //--------------------------------- sending message if( searchList.MODE != 'view' ){ with( document.getElementById( 'PROMPT_BOX' ) ){ innerHTML = "sending now...."; style.display = "block"; } location.hash = "#PROMPT"; } //--------------------------------- call ajax sendRequest( doResponse, searchList, "POST", SEND_URL, true, true ); } //============================== // response //============================== function doResponse( XRobj ){ try{ eval( XRobj.responseText ); }catch( errorMSG ){ status = "eval error"; } viewMenu(); viewThread( HEAD_TOPIC ); var MODE_MSG = { 'new' : "new for admin", 'edit' : "edit", 'view' : false, 'post' : "スレッド[]を投稿しました。", 'right' : "right", 'kill' : "スレッド[]を削除しました。", 'up' : "スレッド[]を先頭にしました。", 'down' : "スレッド[]を退避させました。", 'knave' : "knave", 'peace' : "peace", 'peel' : "peel", 'group' : "グループ<>を投稿しました。", 'JOIN' : "JOIN", 'join' : "グループに<>追加されました。" }; //--------------------------- command response message with( RESPONSE_LIST ){ if( MODE != 'view' ){ var tx = ""; if( ERROR.length ){ alert( "エラーが発生しました。\n-------------\n" + ERROR.join( "\n\t* " ) ); }else if( MODE_MSG[ MODE ] ){ var message = MODE_MSG[ MODE ].replace( /\[\]/g, "[" + THREAD + "]" ).replace( /<>/g, "[" + PARENT + "]" ); //--------------------------------- sending message with( document.getElementById( 'PROMPT_BOX' ) ){ innerHTML = message + "
" + tx; // setTimeout( "document.getElementById('PROMPT_BOX').style.display = 'none';", 28000 ); // style.display = ""; } // alert( message ); }else{ alert( "OK [ " + MODE + " ]" ); } if( MODE.match( /post/ ) ){ with( document.getElementById( 'FORM_TOPIC' ) ){ var memoIcon = ICON.options[ ICON.selectedIndex ].value; reset(); ICON.value = memoIcon; } } if( !MODE.match( /join|JOIN|up|down/ ) ){ location.hash = "#TOPICs_TREE"; } } } SEND_LOCK = false; doResponseExtra(); } //=============================== // extra send topic //=============================== function doResponseExtra(){ return; } //================================================= // draw Usage //================================================= function drawUsageButton( thisArea ){ document.write( "" ); } //================================================= // draw attention //================================================= function drawAttention( attentionText ){ document.write( "
" + "
諸注意
" + "
" + attentionText + "
" ); } //================================ // make tag [ prompt box ] //================================ function makeTagPromptBox(){ return "
" + ""; } //================================ // make tag [ topic menu ] //================================ function makeTagTopicMenu(){ var tagString = ""; //------------------------------ // draw input form //------------------------------ tagString += ""; tagString += ""; tagString += ""; tagString += ""; //---------------- thread selecter tagString += ""; tagString += ""; //---------------------------------------- thread selecter tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; //---------------- search box tagString += ""; tagString += ""; tagString += ""; tagString += ""; //---------------- replay open tagString += ""; tagString += ""; tagString += ""; tagString += "
スレッド"; tagString += ""; tagString += "グループ"; tagString += ""; tagString += "
"; tagString += "
"; tagString += ""; tagString += ""; tagString += "
"; tagString += ""; tagString += "
"; tagString += ""; tagString += "
"; tagString += ""; tagString += "
"; tagString += "
"; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += "" + // "SE"; // serial number in thread ""; // serial number in thread tagString += "
"; tagString += "スレッド"; tagString += ""; tagString += "順"; tagString += "
"; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += "
"; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += "" + "" + ""; //-------------------- submit button tagString += ""; tagString += ""; //-------------------- parent group tagString += ""; tagString += ""; tagString += ""; tagString += ""; //-------------------- memo tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += "
"; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += "
名" + "" + "" + ""; tagString += ""; tagString += "
"; tagString += ""; tagString += "
メモ" + "" + "
"; tagString += ""; tagString += "
検索"; tagString += ""; tagString += ""; tagString += "
返信開示"; //-------------------------- Main topic title & ID & date var radioDaysObj = { 0 : "主投稿", 1 : "1日", 2 : "2日", 3 : "3日", "-1" : "全部" }; tagString += "
"; for( var Rnum in radioDaysObj ){ tagString += "" + ""; } tagString += "
"; tagString += "
"; tagString += ""; return( tagString ); } //================================ // move to next prev thread //================================ function pageThread( direction ){ with( document.getElementById( 'THREAD_SELECT' ) ){ value = parseInt( value ) + ( direction ? 1 : -1 ); onchange(); } } //================================ // show group form //================================ function openGroupForm( mode ){ //-------------------------- close form var sw = mode != 'close'; if( !sw ){ retrun; } with( document.getElementById( 'FORM_GROUP' ) ){ with( document.getElementById( 'GROUP_SELECT' ) ){ var editGroup = ( selectedIndex < 0 ? 0 : options[ selectedIndex ].value ); } //-------------------------- set form as [ edit ] if( mode == 'edit' && editGroup && GROUP_LIST[ editGroup ] ){ //--------------------- check password if( !GROUP_LIST[ editGroup ].RIGHT ){ noRightMessage(); return; } SERIAL.value = editGroup; PARENT_SELECT.value = GROUP_LIST[ editGroup ].GROUP; TITLE.value = GROUP_LIST[ editGroup ].TITLE; MESSAGE.value = GROUP_LIST[ editGroup ].MESSAGE; document.getElementById( 'GROUP_SUBMIT_BUTTON' ).value = "編集"; //-------------------------- set form as [ new ] }else{ SERIAL.value = 0; PARENT_SELECT.value = 0; TITLE.value = ""; MESSAGE.value = ""; document.getElementById( 'GROUP_SUBMIT_BUTTON' ).value = "新規"; } } location.hash = "#GROUP_EDIT"; } //==================================== // message open //==================================== function openMessage ( openSwitch ){ var currentHead = parseInt( document.getElementById( "THREAD_SELECT" ).value ); if( isNaN( currentHead ) || !isFullData( currentHead ) ){ return; } var currentThread = THREAD_NUMBER[ currentHead ]; var currentList = THREAD_LIST[ currentThread ]; for( var SEnum in currentList.SERIAL ){ if( parseInt( SEnum ) < 2 || !currentList.SERIAL[ SEnum ].MESSAGE ){ continue; } var MSGobj = document.getElementById( "MESSAGE" + SEnum ); if( !MSGobj ){ continue; } with( MSGobj ){ if( style.display != ( ( openSwitch < 0 || getPassDays( currentList.SERIAL[ SEnum ].DATE_EDIT ) < openSwitch ) ? "block" : "none" ) ){ document.getElementById( "OPEN" + SEnum ).onclick(); } } } } //================================================ // call thread by serial //================================================ function callThreadBySerial(){ var serialNumber = parseInt( document.getElementById( 'THREAD_CALL' ).value ); if( THREAD_LIST[ serialNumber ] && isFullData( THREAD_LIST[ serialNumber ].HEAD ) ){ viewThread( THREAD_LIST[ serialNumber ].HEAD ); }else{ callThread( 0 ); document.getElementById( 'THREAD_CALL' ).value = 0; } } //================================================ // send topic/group command to RsSLSaccess // // mode : // [topic] post/edit/kill/head/back // [group] post/edit/kill/head // Fobj : form object //================================================ function sendGroup( mode, Gobj ){ var Fobj = document.getElementById( 'FORM_TOPIC' ); //--------------- input check if( submitCheck( 'right', Fobj ) ){ return; } if( !Gobj ){ Gobj = document.getElementById( 'FORM_GROUP' ); } with( Gobj ){ var sendObj = { MODE : mode, PAGE : 'group', AREA : "Hamamatu", GENRE : "FreeBoard", LABEL : MODE_LABEL, SORT_THREAD : getSortKey(), STYLE : "", USE_GROUP : document.getElementById( 'USE_GROUP' ).checked ? 1 : 0, GROUP : getUseGroup(), HEAD_GROUP : getUseGroupHead() }; //-------------------------------------------- // new group //-------------------------------------------- if( sendObj.MODE == 'group' ){ //-------------------- hidden data sendObj.SERIAL = SERIAL.value; sendObj.PARENT = PARENT_SELECT.value; //-------------------- input data sendObj.NAME = Fobj.NAME.value; sendObj.KEY = Fobj.KEY.value; sendObj.TITLE = TITLE.value; sendObj.MESSAGE = MESSAGE.value; //----------------- clear form // SERIAL, PARENT, SERIAL.value = 0; PARENT_SELECT.value = 0; TITLE.value = ""; MESSAGE.value = ""; document.getElementById( 'GROUP_MODE_NEW' ).checked = true; //-------------------------------------------- // move thread [ up / down ] //-------------------------------------------- }else if( sendObj.MODE.match( /up|down/ ) ){ sendObj.NAME = Fobj.NAME.value; sendObj.KEY = Fobj.KEY.value; sendObj.SERIAL = SERIAL.value; //-------------------------------------------- // move thread [ kill ] //-------------------------------------------- }else if( sendObj.MODE == 'kill' ){ sendObj.NAME = Fobj.NAME.value; sendObj.KEY = Fobj.KEY.value; sendObj.SERIAL = SERIAL.value; //-------------------------------------------- // others //-------------------------------------------- }else{ return; } //---------------------------- // reset //---------------------------- onreset(); } // getCookie( "BBS_LOCK", ); submitSLS( sendObj ); } //================================ // set menu //================================ function viewMenu() { //---------------------------- // thread //---------------------------- //--------------------------- get current head of topic if( !THREAD_LIST[ THREAD_NUMBER[ HEAD_TOPIC ] ] ){ for( var Tnum in THREAD_LIST ){ HEAD_TOPIC = THREAD_LIST[ Tnum ].HEAD; break; } } //-------------------------------------- all thread selecter with( document.getElementById( 'THREAD_SELECT' ) ){ options.length = 0; //------------------------- set options before page var headTopic = 0; for( var pos in THREAD_NUMBER ){ headTopic = parseInt( pos ) - 1; break; } var page = 1; var optList = []; while( 0 < headTopic ){ headTopic -= SPAN_THREAD; headRound = Math.max( 0, headTopic ); optList = [ new Option( ( headRound ? "-" + page++ + " page" : "top page" ), headRound ) ].concat( optList ); } for( var Onum in optList ){ ( options[ options.length ] = optList[ Onum ] ).style.backgroundColor = 'lightgreen'; } //------------------------- set options by data for( var THpos in THREAD_NUMBER ){ var THnum = THREAD_NUMBER[ THpos ]; if( !THREAD_LIST[ THnum ] ){ continue; } with( THREAD_LIST[ THnum ] ){ var dateWrite = DATE; var mainTopic = SERIAL[ 1 ]; var hasReply = REPLY; var hasReader = READer; var hasMessage = !!SERIAL[ 1 ].MESSAGE; var hasTitle = !!SERIAL[ 1 ].TITLE; ( options[ options.length ] = new Option( ( hasMessage ? "[" + THnum + "]" : "(" + THnum + ")" ) + " " + ( hasTitle ? SERIAL[ 1 ].NAME + ( REPLY || READer ? "(" + ( REPLY ? REPLY : "" ) + ( READer ? "+" : "" ) + ")" : ">" ) + trimTitle( SERIAL[ 1 ].TITLE, 16, "//" ) : "-" ).replace( /LLIO/g, USHER_ID ), HEAD ) ).style.backgroundColor = getPassDaysColor( dateWrite ); } } //------------------------- set options after page var tailTopic = TOTAL_THREAD; for( var pos in THREAD_NUMBER ){ tailTopic = parseInt( pos ) + 1; } var page = 1; var optList = []; while( tailTopic < TOTAL_THREAD - 1 ){ tailRound = Math.min( TOTAL_THREAD - 1, tailTopic ); optList = optList.concat( [ new Option( ( tailRound < TOTAL_THREAD ? "+" + page++ + " page" : "bottom page" ), tailRound ) ] ); tailTopic += SPAN_THREAD; } for( var Onum in optList ){ ( options[ options.length ] = optList[ Onum ] ).style.backgroundColor = 'lightgreen'; } //---------------------- current thread value = HEAD_TOPIC; } //---------------------------- // group //---------------------------- //--------------------------- get current head of group if( !GROUP_LIST[ GROUP_NUMBER[ HEAD_GROUP ] ] ){ for( var Gnum in GROUP_LIST ){ if( GROUP_LIST[ Gnum ].HEAD != -1 ){ HEAD_GROUP = GROUP_LIST[ Gnum ].HEAD; break; } } } //-------------------------------------- all thread selecter with( document.getElementById( 'GROUP_SELECT' ) ){ options.length = 0; //------------------------- set options before page var headGroup = 0; for( var pos in GROUP_NUMBER ){ headGroup = parseInt( pos ) - 1; break; } var page = 1; var optList = []; while( 0 < headGroup ){ headRound = Math.max( 0, headGroup ); optList = [ new Option( ( headRound ? " -" + page++ + " page" : " top page" ), -headRound ) ].concat( optList ); headGroup -= SPAN_GROUP; } for( var Onum in optList ){ ( options[ options.length ] = optList[ Onum ] ).style.backgroundColor = 'lightgreen'; } //------------------------- set options by data for( var GRpos in GROUP_NUMBER ){ var GRnum = GROUP_NUMBER[ GRpos ]; if( !GROUP_LIST[ GRnum ] ){ continue; } with( GROUP_LIST[ GRnum ] ){ if( HEAD == -1 ){ continue; } options[ options.length ] = new Option( "[" + GRnum + "] " + trimTitle( TITLE, 16, "//" ).replace( /LLIO/g, USHER_ID ), GRnum ); //----------------- children setChildren( options, 0, CHILDREN ); } } //------------------------- set options after page var tailGroup = TOTAL_GROUP; for( var pos in GROUP_NUMBER ){ tailGroup = parseInt( pos ) + 1; } var page = 1; var optList = []; while( tailGroup < TOTAL_GROUP - 1 ){ tailRound = Math.min( TOTAL_GROUP - 1, tailGroup ); optList = optList.concat( [ new Option( ( tailRound == TOTAL_GROUP - 1 ? " bottom page" : " +" + page++ + " page" ) + " (" + -tailRound + ")", -tailRound ) ] ); tailGroup += SPAN_GROUP; } for( var Onum in optList ){ ( options[ options.length ] = optList[ Onum ] ).style.backgroundColor = 'lightgreen'; } //---------------------- current group value = ( CALL_GROUP ? CALL_GROUP : ( GROUP_NUMBER[ HEAD_GROUP ] ? GROUP_NUMBER[ HEAD_GROUP ] : 0 ) ); } var orgObj = document.getElementById( 'GROUP_SELECT' ).options; var setObj = document.getElementById( 'PARENT_SELECT' ).options; setObj.length = 1; for( var pos=0; pos"; } //========================================================================================================== with( viewSet ){ //----------------------------- header [name(mail),serial,home,date var hasGemLine = viewSet.GEM_LINE && GEM_LINE.replace( /!---$/, "" ).length; outputString = "
"; } } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- headerTag += "
"; headerTag += ( SEnum == 1 ? "[" + THnum + "] " : "(" + SEnum + ") " ); if( hasGemLine ){ headerTag += ""; } headerTag += ""; headerTag += trimTitle( TITLE, 28, "..." ).replace( searchRegExp, replaceString ); headerTag += ""; if( isMain ){ headerTag += "
"; headerTag += "
"; } headerTag += "" + NAME.replace( searchRegExp, replaceString ) + " (" + SAME + ")"; headerTag += ""; headerTag += ( new Date( DATE_WRITE * 1000 ) ).toLocaleString(); headerTag += ""; headerTag += "
"; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- var messageHTML = "
"; //------------------------------ mail & link if( MAIL != "" || LINK != "" ){ messageHTML += ""; if( MAIL != "" ){ messageHTML += ""; } if( LINK != "" ){ messageHTML += ""; } messageHTML += "
MailLink
"; } //------------------------- face ball var getALT = ICON_LIST[ ICON ]; messageHTML += "" + ( getALT ? getALT : "unknown" ) + ""; messageHTML += ""; messageHTML += ""; messageHTML += ""; messageHTML += ""; if( isMain ){ messageHTML += ""; messageHTML += ""; messageHTML += ""; messageHTML += ""; messageHTML += ""; } messageHTML += ""; messageHTML += "
"; var makeColor = ""; var thisMSG = MESSAGE.replace( /\\n/g, "
" ).replace( /'/g, "'").replace( /"/g, """ ).replace( /
-+
/g, "

" ); if( SEARCH_KEY ){ thisMSG = thisMSG.replace( searchRegExp, replaceString ); } var checkList = []; while( thisMSG.match( />>(\d+)/ ) ){ var callNum = RegExp.$1; thisMSG = thisMSG.replace( new RegExp( ">>" + callNum, "g" ), "⇒" + callNum + "" ); } messageHTML += "
" + thisMSG + "
"; messageHTML += "
"; messageHTML += "
"; //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- var messagePassDays = getPassDays( DATE_EDIT ); var messageTag = "
" + messageHTML + "
"; HEADer_TAG = headerTag; outputString += ( SEnum == 1 ? "" : headerTag ) + messageTag; // outputString += ( isRsSLS && SEnum == 1 ? "" : headerTag ) + messageTag; // outputString += headerTag + messageTag; //========================================================================================================== //--------------------------------------------- // children tree //--------------------------------------------- var childrenTag = ""; for( var Cnum in CHILDREN ){ childrenTag += makeThreadNestTag( THnum, CHILDREN[ Cnum ] ); } if( childrenTag != "" ){ outputString += "
" + childrenTag + "
"; } } outputString += "
"; this.nestLebel --; return( outputString ); } //=================================== // open message //=================================== function openThisMessage( SEnum, setMode ){ with( document.getElementById( "MESSAGE" + SEnum ).style ){ display = ( setMode == 0 ? ( display == "block" ) : ( 0 < setMode ) ) ? "none" : "block"; } } //=========================================== // make tag [ readers ] //=========================================== function makeTagReader ( threadNumber ){ var readString = ""; if( !hasThread( threadNumber ) ){ return ""; } var readString = ""; with( THREAD_LIST[ threadNumber ] ){ for( var SEnum in SERIAL ){ if( parseInt( SEnum ) < 2 ){ continue; } var getName = SERIAL[ SEnum ].NAME; if( SERIAL[ SEnum ].MESSAGE == '' ){ readString += "" + ( SERIAL[ SEnum ].RIGHT ? ( "" + getName + "" ) : getName ) + ""; } } } if( readString != "" ){ readString = "
" + "
閲覧者
" + readString + "
" + "
"; } return( readString ); } //================================================ // send topic/group command to RsSLSaccess // // mode : // [topic] post/edit/kill/head/back // [group] post/edit/kill/head // Fobj : form object //================================================ function sendTopic( mode, Fobj ){ if( !Fobj ){ Fobj = document.getElementById( 'FORM_TOPIC' ); } //--------------- input check if( mode.match( /post|right/ ) && submitCheck( mode, Fobj ) ){ return; }else if( mode == 'read' ){ mode = 'post'; } var sendObj = { MODE : mode, PAGE : 'topic', AREA : "Hamamatu", GENRE : "FreeBoard", LABEL : MODE_LABEL, STYLE : "black", SORT_THREAD : getSortKey(), SEARCH : getSearchString(), USE_GROUP : document.getElementById( 'USE_GROUP' ).checked ? 1 : 0, GROUP : getUseGroup(), HEAD_GROUP : getUseGroupHead() }; with( Fobj ){ //-------------------------------------------- // new topic //-------------------------------------------- if( sendObj.MODE == 'post' ){ //-------------------- hidden data sendObj.THREAD = THREAD.value; sendObj.SERIAL = SERIAL.value; sendObj.PARENT = PARENT.value; //-------------------- input data sendObj.NAME = NAME.value; sendObj.KEY = KEY.value; sendObj.MAIL = MAIL.value; sendObj.LINK = LINK.value; sendObj.TITLE = TITLE.value; sendObj.MESSAGE = MESSAGE.value; sendObj.ICON = ICON.value; for ( var pos=0; pos" ).replace( /
/g, "\n" ); } } //============================ // trans reply title //============================ function transReplyTitle ( title ){ if( title.match( /^Re/ ) ){ return( title.match( /^Re\{(\d+)\}/ ) ? "Re{" + (parseInt(RegExp.$1)+1) + "} " + RegExp.rightContext : "Re{2} " + RegExp.rightContext.substring( 1 ) ); }else{ return( "Re:"+title ); } } //============================ // decode HTML string //============================ function decodeHTMLstring( text ){ return( text.replace( /</g, "<" ).replace( />/g, ">" ).replace( /"/g, "\"" ).replace( /⇒/g, ">>" ).replace( /&/g, "&" ).replace( /
/g, "\n" ) ); } } //=============================== // for GEM_LINE @RsSLS //=============================== function formSetExtra( ThreadNumber, SerialNumber, isEditMode ){ } //============================ // reply set //============================ function replySet( ThreadNumber, ParentNumber ){ var Fobj = document.getElementById( 'FORM_TOPIC' ); if( !Fobj ){ return true; } //--------------------- set reply data formSet( ThreadNumber, ParentNumber, false ); // false:reply mode with( Fobj ){ THREAD.value = ThreadNumber; SERIAL.value = '0'; // as NEW PARENT.value = ParentNumber; SUBMIT_BUTTON.value = "返信"; } //--------------------- goto input form location.hash = '#INPUT'; } //============================ // edit set //============================ function editSet( ThreadNumber, SerialNumber ){ var Fobj = document.getElementById( 'FORM_TOPIC' ); if( !Fobj ){ return true; } //--------------------- set Edit data var getList = THREAD_LIST[ ThreadNumber ].SERIAL[ SerialNumber ]; //--------------------- check password if( !getList.RIGHT ){ noRightMessage(); return; } formSet( ThreadNumber, SerialNumber, true ); // true:edit mode with( Fobj ){ THREAD.value = ThreadNumber; SERIAL.value = SerialNumber; PARENT.value = getList.PARENT; SUBMIT_BUTTON.value = "編集"; MODE.value = "post"; } //--------------------- goto form location.hash='#INPUT'; } //====================================== // Icon change //====================================== function showIcon(){ with( document.getElementById( 'FORM_TOPIC' ) ){ SHOW_ICON.src = DIR_ICON + ICON.options[ ICON.selectedIndex ].value + ".gif"; } } //============================ // kill message //============================ function eraser( ThreadNumber, SerialNumber ){ var Fobj = document.getElementById( 'FORM_TOPIC' ); if( !Fobj ){ return true; } //--------------------- get data var getList = THREAD_LIST[ ThreadNumber ].SERIAL[ SerialNumber ]; //--------------------- check password if( !getList.RIGHT ){ noRightMessage(); return; } if( getList.MESSAGE && !confirm( "削除しますか?" + ( getList.MESSAGE != '' ? "\n--------------\n" : "" ) + "[" + ThreadNumber + "] (" + SerialNumber + ") " + getList.NAME + "\n\n" + getList.MESSAGE.replace( /</g, "<" ).replace( />/g, ">" ).replace( /
/g, "\n" ) ) ){ return; } with( Fobj ){ THREAD.value = ThreadNumber; SERIAL.value = SerialNumber; } sendTopic( 'kill', Fobj ); } //============================ // edit set //============================ function readSet( ThreadNumber ){ var Fobj = document.getElementById( 'FORM_TOPIC' ); if( !Fobj ){ return true; } //--------------------- set Edit data with( Fobj ){ THREAD.value = ThreadNumber; SERIAL.value = 0; // as NEW PARENT.value = 1; MAIL.value = ""; LINK.value = ""; TITLE.value = ""; MESSAGE.value = ""; document.applets[ FORM_APPLET ].setGemLineString( "" ); } sendTopic( 'read', Fobj ); } //============================ // move thread //============================ function moveThread( ThreadNumber, directionFlag ){ var Fobj = document.getElementById( 'FORM_TOPIC' ); if( !Fobj ){ return; } //--------------------- check password if( !THREAD_LIST[ ThreadNumber ].SERIAL[ 1 ].RIGHT ){ noRightMessage(); return; } //--------------------- set data if( !confirm( directionFlag ? "この話題を一番上にしますか?" : "この話題を退避しますか?" ) ){ return; } with( Fobj ){ THREAD.value = ThreadNumber; } sendTopic( directionFlag ? 'up' : 'down', Fobj ); } //============================ // move group //============================ function moveGroup( directionFlag ){ var groupNumber = parseInt( document.getElementById( 'GROUP_SELECT' ).value ); if( isNaN( groupNumber ) || groupNumber < 0 ){ alert( "Target group was not found" ); return; } //--------------------- check password if( !GROUP_LIST[ groupNumber ].RIGHT ){ noRightMessage(); return; } //--------------------- set data if( !confirm( directionFlag ? "このグループを一番上にしますか?" : "このグループを退避しますか?" ) ){ return; } var Gobj = document.getElementById( 'FORM_GROUP' ); if( !Gobj ){ return; } with( Gobj ){ SERIAL.value = groupNumber; } sendGroup( directionFlag ? 'up' : 'down', null ); } //==================================== // join thread to group //==================================== function joinGroup( mode ){ var Fobj = document.getElementById( 'FORM_TOPIC' ); if( !Fobj ){ return; } var getJoinGroup = parseInt( document.getElementById( 'GROUP_SELECT' ).value ); if( isNaN( getJoinGroup ) || getJoinGroup < 0 ){ alert( "Join group was not found" ); return; } var getJoinThread = THREAD_NUMBER[ document.getElementById( 'THREAD_SELECT' ).value ]; if( !getJoinThread ){ return; } //--------------------- check password if( !THREAD_LIST[ getJoinThread ].SERIAL[ 1 ].RIGHT ){ noRightMessage(); return; } if( isNaN( getJoinThread ) || !THREAD_LIST[ getJoinThread ] ){ alert( "Join thread was not found" ); return; } sendTopic( mode, null ); } //============================ // kill group //============================ function killGroup(){ var groupNumber = parseInt( document.getElementById( 'GROUP_SELECT' ).value ); if( isNaN( groupNumber ) || groupNumber < 0 ){ alert( "Target group was not found" ); return; } //--------------------- check password if( !GROUP_LIST[ groupNumber ].RIGHT ){ noRightMessage(); return; } //--------------------- check cheldren group if( GROUP_LIST[ groupNumber ].CHILDREN.length ){ alert( "Target group has children group.\nYou can not remove this group." ); return; } //--------------------- set data if( !confirm( "このグループを削除しますか?" ) ){ return; } var Gobj = document.getElementById( 'FORM_GROUP' ); if( !Gobj ){ return; } with( Gobj ){ SERIAL.value = groupNumber; } sendGroup( 'kill', null ); } //=================================== // confirm for page link //=================================== function confirm4Link(){ return( confirm( "当サイトとは別のサイトへ行こうとしています。\nウイルスや騙しなどの罠が仕掛けられている可能性がありますが、それでも行きますか?" ) ); } //================================================================================= // // button operation // //================================================================================= //=================================== // no right message //=================================== function noRightMessage(){ alert( "編集権がありません" ); } //==================================== // view thread menu //==================================== function viewTableMenu () { tagString = ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; tagString += ""; var headString = "" + "" + "" + "" + "" + "" + "" + "" + "" + ""; var searchRegExp = new RegExp( transSearchKey( SEARCH_KEY ), "g" ); var replaceString = ""; if( SEARCH_KEY ){ replaceString = "" + SEARCH_KEY + ""; } var floatMenuString = ""; var doronString = "document.getElementById(\"FLOAT_MENU\").style.display=\"none\";"; var pos = 0; for( var Tnum in THREAD_LIST ){ with( THREAD_LIST[ Tnum ] ){ var passDays = getPassDays( DATE ); var passColor = getPassDaysColor( DATE ); with( SERIAL[ 1 ] ){ if( !SERIAL[ 1 ].TITLE ){ continue; } if( pos++ % 10 == 0 ){ tagString += headString; } var hasData = !!SERIAL[ 1 ].MESSAGE; var passDaysTag = ( passDays ? ( 31 < passDays ? "31+" : passDays ) : "new" ); tagString += "" + "" + ""; with( new Date( DATE * 1000 ) ){ tagString += ""; } tagString += ""; tagString += "" + ""; var groupNest = ""; if( SERIAL[ 0 ] ){ var tempGroup = SERIAL[ 0 ].PARENT; if( tempGroup ){ if( GROUP_LIST[ tempGroup ] ){ with( GROUP_LIST[ tempGroup ] ){ groupNest = TITLE; tempGroup = GROUP; } }else{ groupNest = "[" + tempGroup + "]"; } } } tagString += "" + "/ig, "\n" ) + "'" : "" ) + ">" + trimTitle( TITLE, 20, "..." ).replace( searchRegExp, replaceString ) + ""; tagString += ""; //---------------------- float menu if( hasData ){ floatMenuString += ""+ ""+ ""; } } } } tagString += "
No.経過日名前返信閲覧グループお題
" + ( hasData ? "[" + Tnum + "]" : "(" + Tnum + ")" ) + "" + passDaysTag + "" + ( passDays < 7 ? toLocaleTimeString() : toLocaleDateString() ) + "" + NAME.replace( searchRegExp, replaceString ) + "" + ( REPLY ? REPLY : " " ) + "" + ( READer ? " (" + READer + ")" : " " ) + "" + ( groupNest ? groupNest : " " ) + "
"+ ""+ "[" + Tnum + "] " + NAME + " (" + REPLY + ") " + trimTitle( TITLE, 20, "..." ) + ""+ "
"; document.getElementById( "MENU_BOX" ).innerHTML = tagString.replace( /LLIO/g, USHER_ID ); document.getElementById( "FLOAT_MENU" ).innerHTML = ( ""+ ""+ ""+ ""+ "" + floatMenuString + "
目録"+ ""+ "
" ).replace( /LLIO/g, USHER_ID ); } //==================================== // trim title //==================================== function trimTitle( title, cut, dash ){ return ( cut < title.length ? title.substr( 0, cut ) + dash : title ); } //-------------------------------------- // trans search key //-------------------------------------- function transSearchKey ( tempKey ){ var keyList = [ "\\", ".", "|", "[", "]", "(", ")", "*", "+", "-", "?", "{", "}", "^", "$" ]; for( var Knum in keyList ){ if( tempKey.indexOf( keyList[ Knum ] ) < 0 ){ continue; } for( var pos=0, cutKey=""; tempKey.length; tempKey=tempKey.substring(1) ){ var readKey = tempKey.charAt( 0 ); if( readKey == keyList[ Knum ] ){ if( readKey == "\\" ){ cutKey += "\\\\\\\\"; }else if( readKey == "?" ){ cutKey += "\\?"; }else{ cutKey += "\\" + readKey; } }else{ cutKey += readKey; } } tempKey = cutKey; } return( tempKey ); }