//============================================ // 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( "スレッド | "; //---------------------------------------- thread selecter tagString += ""; tagString += ""; tagString += " | "; tagString += "グループ"; tagString += ""; tagString += " | "; tagString += "|||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
"; tagString += ""; tagString += " | "; tagString += "";
tagString += "";
tagString += "
";
var headerTag = "";
//------------------ group nest
if( isMain ){
var groupNest = "";
if( THREAD_LIST[ THnum ].SERIAL[ 0 ] ){
var tempGroup = THREAD_LIST[ THnum ].SERIAL[ 0 ].PARENT;
while( tempGroup ){
if( GROUP_LIST[ tempGroup ] ){
with( GROUP_LIST[ tempGroup ] ){
groupNest = TITLE + " ⇒ " + groupNest;
tempGroup = GROUP;
}
}else{
groupNest = "[" + tempGroup + "]" + " ⇒ " + groupNest;
break;
}
}
headerTag += " ";
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 = "" +
groupNest +
" ";
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
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 += " ";
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
var messagePassDays = getPassDays( DATE_EDIT );
var messageTag = "
" ).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 += " " + 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 += "" +
" ";
}
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閲覧者 " +
readString +
"" + " /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 = "
|