//================================================================== // // RDFA JavaScript // // '03/08/30~ // '03/11/02~ Big Change (Coment Operations) // '06/07/08~11 group // 2007/02/20~03/19 // 2008/07/15 parameter 1st system // 2008/08/02 parameter 2nd system // //================================================================== /* */ //============================ // global //============================ FigNum=0; // Applet number MainPath = 'http://works28.renju.info/'; CodeBase = MainPath + 'JavaApplet/RDFAnew/'; CodeBase = MainPath + 'JavaApplet/RDFA02/'; // MessengerWidth = 200; AutoStepSec = 1000; Language = null; var RDFA_GEM_DIMENSION = 3; var RDFA_COMMENTs = {}; var RDFA_GROUP = {}; var CURRENT_OPUS = {}; // RDFAnumber : { data object } //--------------------- BackBroundColor /* BGCofBoard ="eeee00"; BGCofFrame ="dddddd"; BGCofOrder ="ffddff"; */ BGCofBoard ="eeee00"; BGCofFrame ="99ff99"; BGCofOrder ="33cc66"; BGCofBoard ="dddd66"; BGCofFrame ="ccccff"; //--------------------- for ScoreCaster var SCORE_CASTER_SEND = false; //====================================================================================================== var Hname =""; var Folder =""; var Genre =""; //====================================================================================================== //========================================================= // Window Resize // When resize, redraw applets //========================================================= function reloadRDFA(){ //if( !document.all ){ return; } for(var f=0;f //============================== /* function putPara(name,value){ document.write(''); } */ //============================== // draw //============================== function makePara( name, value ){ return( "" ); } function putGroup( Mode, Span, DataSet ){ drawGroupRDFA( Mode, Span, DataSet ); } function drawGroupRDFA ( Mode, Span, DataSet ){ document.write( makeTagGroupRDFA ( Mode, Span, DataSet ) ); } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ /*================================================================================ draw RDFA board (single) ------------ common parameter Mode D:read & write H:read only(extra OK) h:read only(no extra) A:next All moves O:next One move F:VCF M:Making E:edit(for SBBS & plain board) P:Playing @ WtPBS(extra OK) p:Playing @ RtPBS(one move and stop) * if Mode.charAt(1)=='a', auto show moves. Span span of cells ------------ parameter Qtext Question text Hint hint(* now, void) Atext Answer text AnsPos Answer point XY list GemLine RDFA Gem line data ------------ status of each mode Mode=D,H,h Mode,Span,Atext(=coment),GemLine Mode=A Mode,Span,Qtext,Atext,AnsPos,GemLine Mode=O,o Mode,Span,Turn,Qtext,Atext,AnsPos,GemLine Mode=F,f Mode,Span,Turn,Qtext,Atext,GemLine ================================================================================*/ function makeTagRDFA ( Mode, Span, GemLine, CommentList ){ var FN = FigNum++; //====================================================== Admin Button applet var currentAppletsNumber = document.applets.length; //-------------- read arguments var HAS_GROUP = typeof GemLine == 'object'; var GROUP_SET = {}; var firstThread = 0; var openSet = null; if( HAS_GROUP ){ GROUP_SET = GemLine; RDFA_GROUP[ currentAppletsNumber ] = {}; for( var GEkey in GROUP_SET ){ for( var THnum in GROUP_SET[ GEkey ] ){ RDFA_GROUP[ currentAppletsNumber ][ THnum ] = GROUP_SET[ GEkey ][ THnum ]; if( openSet == null ){ openSet = GROUP_SET[ GEkey ][ THnum ]; } } } if( openSet != null ){ with( openSet ){ GemLine = GEM_LINE; CommentList = COMMENT; } } } var HAS_COMMENT = HAS_GROUP || ( CommentList!=null && CommentList.length ); RDFA_COMMENTs[ currentAppletsNumber ] = ( typeof CommentList == "string" ) ? [ CommentList ] : CommentList; //------------------------ option read var targetGemLine = ( HAS_GROUP && openSet != null ) ? openSet.GEM_LINE : GemLine; //---------------------- get modes var isVCF = Mode.match( /F/i ); var isALL = targetGemLine.indexOf( "?A" ) != -1; var hasButton = isAllCheck || isVCF; var Auto = Mode.match( /a/ ); // auto replay var showNumber = Mode.match( /n/ ) ? true : false ; var showLast = Mode.match( /l/ ) ? true : false ; var Mode = Mode.charAt( 0 ); // get mode var isAllCheck = false; if( HAS_COMMENT ){ for( var Cnum in CommentList ){ if( typeof CommentList[ Cnum ] == "object" ){ isAllCheck = true; break; } } } //============================================ draw RDFA //=================================== // get applet size //=================================== //-------------------------- get applet size from first gemline data of group with( getAppletSize( targetGemLine ) ){ var cols = R - L + 1; var rows = B - T + 1; var Lp = L; var Tp = T; var Rp = R; var Bp = B; } //------------------------------------- // option for RDFA //------------------------------------- var hasAxis = Span < 0 ? 1 : 0; var Opt = ""; //--------------------------------- use messanger if( HAS_COMMENT ){ Opt += "coment,"; } //--------------------------------- auto replay if( Auto ){ Opt += "auto,"; } //--------------------------------- request Axis if( hasAxis ){ Opt += "axis,"; Span = Math.abs( Span ); } if( Span == 1 ){ Span = 0; } //--------------------- applet size // size = 0 : 100% order var wid,hei; if( Span ){ wid = Span * ( cols + 2 * hasAxis ); hei = Span * ( rows + 2 * hasAxis ); }else{ wid = Messe ? "60%" : "100%"; hei = "100%"; } var tagString = ""; if( HAS_COMMENT ){ tagString += "
"; if( HAS_GROUP ){ tagString += ""; } tagString += ""; //********************************************************************************************* //----------------------------- message box tagString += "
"; tagString += openSet.TITLE; tagString += "
"; } //-------------------------------------- // RDFA board //-------------------------------------- // FN= applet number var Bname = "RDFA" + FN; tagString += ""; //--------- Common parameter for RDFA (no need Data Number) tagString += makePara( "pass", document.URL ); // password tagString += makePara( "mode", Mode + ( showNumber ? "n" : "" ) + ( showLast ? "l" : "" ) ); // mode tagString += makePara( "option", Opt ); // draw option tagString += makePara( "BackGroundColor", BGCofFrame ); // back ground color tagString += makePara( "BoardColor", BGCofBoard ); // board color tagString += makePara( "GemDimension", RDFA_GEM_DIMENSION ); // gem dimension // if( Auto ){ // 2008/07/08 tagString += makePara( "AutoStep", "" + AutoStepSec ); // Auto replay interval // } //--------------------------------------------- gem line (with data number) tagString += makePara( "moveline0", GemLine ); tagString += ""; //======================================================================================== // Messenger // 's 40% case: When size is fixed, hope that width is (screen size - board size) //======================================================================================== if( HAS_COMMENT ){ tagString += ""; tagString += ""; if( HAS_GROUP ){ tagString += ""; } tagString += ""; if( hasButton ){ tagString += ""; } tagString += "
" + makeTagRDFAselecter( currentAppletsNumber, GROUP_SET ) + "
"; tagString += "
" + RDFA_COMMENTs[ currentAppletsNumber ][ 0 ].replace( /'/g, "'" ) + "
"; tagString += "
"; //--------------------------------------------- // VCF //--------------------------------------------- if( isVCF ){ tagString += ""; //--------------------------------------------- // next all //--------------------------------------------- }else if( isAllCheck ){ tagString += ""; } tagString += "
"; //********************************************************************************************* if( typeof CommentList != "string" ){ setInterval( "setMessage(" + currentAppletsNumber + ")", 300 ); } tagString += "
"; } return tagString; } //=========================================================================================================== // make tag RDFA group selecter //=========================================================================================================== function makeTagRDFAselecter( currentAppletsNumber, DataSet ){ //------------------------------------------- // make selecter tag //------------------------------------------- var selectString = ""; selectString += ""; return selectString; } //=========================================================================================================== // put group by JS type // group mode is common system. Therefore, 'o' & 'f' (the small letter's mode) is nothing. // Group button applets is always written by "width=100%" without condition of Span // If want to be narrow size, hold all RDFA body by
// When group name is null, don't use Title of group and write "Group Serial number" as group name. /* var VCF_LIST = { 'GENRE_TITLE' : { THREAD_SERIAL : { TITLE : 'オリオン座', GEM_LINE : '', COMMENT : '' }, THREAD_SERIAL : { TITLE : 'オリオン座', GEM_LINE : '', COMMENT : '' } } }; */ //=========================================================================================================== function makeTagGroupRDFA( Mode, Span, DataSet ){ return makeTagRDFA( Mode, Span, DataSet ); } //================================= // set RDFA //================================= function setRDFA( SLobj ){ with( SLobj ){ var RDFAnum = getAttribute( "RDFA_NUMBER" ); with( options[ selectedIndex ] ){ eval( "RDFA_COMMENTs[ " + RDFAnum + " ] = " + getAttribute( "RDFA_COMMENT" ) ); with( document ){ getElementById( 'RDFA_TITLE' + RDFAnum ).innerHTML = options[ selectedIndex ].innerHTML; // getElementById( 'RDFA_MESSAGE_BOX' + RDFAnum ).innerHTML = RDFA_COMMENTs[ RDFAnum ][ 0 ]; applets[ RDFAnum ].setGemLineString( getAttribute( "RDFA_GEM_LINE" ) ); RDFA_COM_NUM[ RDFAnum ] = -1; setMessage( RDFAnum ); } } } } var RDFA_COM_NUM = []; function setMessage ( RDFAnum ){ try{ var messageList = RDFA_COMMENTs[ RDFAnum ]; var commentNumber = document.applets[ RDFAnum ].$commentNumber; var getMessage = ""; if( commentNumber < 0 ){ getMessage = "?"; }else{ getMessage = messageList[ commentNumber ]; if( typeof getMessage == "number" ){ getMessage = messageList[ getMessage ]; if( typeof getMessage != "string" ){ getMessage = getMessage[ 0 ]; } } } if( RDFA_COM_NUM == null ){ RDFA_COM_NUM = []; } if( RDFA_COM_NUM[ RDFAnum ] != commentNumber ){ document.getElementById( 'RDFA_MESSAGE_BOX'+RDFAnum ).innerHTML = getMessage.replace( /'/g, "'" ); // 2008/07/15 } RDFA_COM_NUM[ RDFAnum ] = commentNumber; }catch( errorMSG ){ status = "RDFA comment error [" + errorMSG + "]"; } } //================================= // make list string //================================= function makeRDFA_CommentListString ( callList ) { if( typeof callList == "string" ){ return( "[\""+callList+"\"]" ); } if( callList.length == 0 ){ return( "[]" ); } var outputString = ""; for( var Cnum in callList ){ if( typeof callList[Cnum] == "number" ){ outputString += ","+callList[Cnum]; }else if( typeof callList[Cnum] == "string" ){ // outputString += ",\""+callList[Cnum]+"\""; outputString += ",\"" + callList[Cnum].replace( /'/g, "'" ) + "\""; // 2008/07/15 // }else{ // outputString += ","+makeListString( callList[Cnum] ); } } return( "["+outputString .substring(1)+"]" ); } //================================= // make list string //================================= function setCleared2RDFAselecter( RDFAnum ) { with( document.getElementById( "RDFA_SELECT" + RDFAnum ) ){ options[ selectedIndex ].style.backgroundColor = "#fcc"; } } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //================================= // get applets size //================================= function getAppletSize( GLset ){ //-------------------------- get applet size var Lp = 15, Rp = -1; var Tp = 15, Bp = -1; var Xadd = 0; var Yadd = 0; var GL = GLset.toUpperCase(); for(var c=0; c"); } //================================= // make list string //================================= function makeListString ( callList ) { if( typeof callList == "string" ){ return( "\""+callList+"\"" ); } if( callList.length==0 ){ return( "[]" ); } var outputString = ""; for( var Cnum in callList ){ if( typeof callList[Cnum] == "number" ){ outputString += ","+callList[Cnum]; }else if( typeof callList[Cnum] == "string" ){ outputString += ",\""+callList[Cnum]+"\""; }else{ outputString += ","+makeListString( callList[Cnum] ); } } return( "["+outputString .substring(1)+"]" ); } //============================================ // help of operation // type:0/1/2=nextOne/nextAll //============================================ function DrillManual (type){ // if(Language){ Mset=[ ['Please Click on the void point. And then the message apear in right message box.'], ['Click all quested points. Red mark apear at clicked points.','You can remove Red mark by right click.
(* you can remove all Red marks at once by Clear button)','Push the Check button after you click all quested points. And then message of OK / NG apears in message box.
(* if your answer is over or less, it is NG.)','If your answer is right, explain about all points.'] ]; // } document.write('
', '', '[ Operation ]', '', '
    ' ); var p=0; while(Mset[type][p]) document.write('
  1. ',Mset[type][p++],'
  2. '); document.write('

'); if(!Language) drawHelpOfRDFA(); document.write('
'); } function drawHelpOfRDFA (){ document.write('' ); } //=============================== // Make NextOne String /* arguments 0: Base set 1: Qtext 2~: Branch Set [[Acoment1,Acoment2,...],GemLineA], // about this add GemLine, comment number is from *000 [[Bcoment1,Bcoment2,...],GemLineB], makeNextOne(0,1,2,...), [[Ccoment1,Ccoment2,...],GemLineC] ... */ //=============================== function makeNextOne (BaseSet,AddSet,TurnNumber,ShortSet){ if(ShortSet){ AddSet = AddSet.concat(makeNextOneAnswerSet(TurnNumber,ShortSet)); } var ComentSet = BaseSet[0]; var NewGemLine = BaseSet[2]+"?0"+comentSerialNum2Str(ComentSet.length)+(BaseSet[1]?"!---":""); // last coment is Qtext for(var Anum in AddSet){ var Gline = AddSet[Anum][1]; for(var Gnum=0;Gnum" ); }