//--------------------
// -- ֐ --
// vg^Cv
.prototype.xxx = function()[
}
//--------------------
// -- ֐ --
// 𐔂
// ̂܂
srcFΏۂƂȂ镶
strF␳K\
function stringCounter( src, str ){ 
	var strlength = str.length;
	var ans = 0;
	var i = 0;
	while( ( i = src.indexOf( str,i ) ) != -1 ){ 
		i += strlength;
		ans++;
	}
	return ans;
}
//--------------------
// -- ֐ --
// 𐔂
// zg
src.split( str ).length - 1;
//--------------------
// -- ֐ --
// ȗɏl^
function f( x,y,z ){ 
	switch ( arguments.length ){ 
		case 0: x = 0;
		case 1: y = 0;
		case 2: z = 0;
	}
	return ( "|" + x + "|" + y + "|" + z + "|" )
}
//--------------------
// Array
// indexOf֐
var action = [ "abc", "def", "ghi", "jkl" ];
action.indexOf = function( target ){
	for ( var i = 0; i < this.length; i++ ){ if ( this[i] === target ){ return i } }
	return -1;
}
//--------------------
// Array
// l̃\[giȈՔŁj
array.sort( function( a, b ){ return a - b } );
//--------------------
// Array
// l̃\[g
array.sort( func );
function func( a, b ){
	if ( a > b ){ return 1 } else if ( a < b ){ return -1 } else { return 0 };
}
//--------------------
// Array
// vf̌ʏiinj
for ( var i in array ){ 
	Alert( array[i] )
}
//--------------------
// Array
// vf̌ʏilengthj
for ( var i = 0; i <= array.length-1; i++ ){ 
	Alert( array[i] )
}
//--------------------
// Array
// t[vŏ
for ( var i = array.length-1; i >=0 ; i-- ){ 
	if ( array[i].length == 0 ){ array.splice( i, 1 ); }
}
//--------------------
// Debug
	Alert( "@F" +  + "<\n" + "@F" +  + "<" )
//--------------------
// Debug
// vvgil󂯁j
var n = Number( prompt( "", "" ) );
//--------------------
// Debug
// vvgi󂯁j
var s = prompt( "", "" );
//--------------------
// ACR
// #A#p
#icon="E:\Users\hiraku\software\Mery\icon\macro_run.ico",0
//--------------------
// GfB^
// GfB^ŊJĂ邩iBooleanj
function isOpened( fullname ){ 
	var result = false;
	for ( var i = Editor.Documents.Count-1; i>=0; i-- ){ 
		result = result || Editor.Documents.Item( i ).FullName.toUpperCase() == fullname.toUpperCase();
	}
	return result;
}
//--------------------
// GfB^
// ZNV̐L
var sel = Editor.ActiveDocument.Selection;
var ty = sel.GetTopPointY( mePosLogical )
var bx = sel.GetBottomPointX( mePosLogical )
var by = sel.GetBottomPointY( mePosLogical )
sel.SetActivePoint( mePosLogical, 1, ty, false )
sel.SetActivePoint( mePosLogical, bx, by, true )
if ( ( bx == 1 )&&( ty != by ) ){
	sel.CharLeft( true, 1 );
	bx = sel.GetBottomPointX( mePosLogical );
	by--;
}else{
	sel.EndOfLine( true, mePosLogical );
};
//--------------------
// GfB^
// hLg̃CfbNX
function fileIndex( fullname ){ 
	for ( var i = Editor.Documents.Count-1; i>=0; i-- ){ 
		if ( Editor.Documents.Item( i ).FullName.toUpperCase() == fullname.toUpperCase() ){ return i }
	}
	return -1;
}
//--------------------
// GfB^
// hLgJĂȂΊJ
function openFile( fullname ){
	var i = fileIndex( fullname );
	if ( i == -1 ){
		if ( fileExists( fullname ) ){
			Editor.NewFile();
			Editor.OpenFile( fullname );
		}else{
			Alert( "t@C݂܂I" );
			return -1;
		}
	}else{
		Editor.Documents.Item( i ).Activate();
	}
	return i;
	function fileIndex( fullname ){ 
		for ( var i = Editor.Documents.Count-1; i>=0; i-- ){ 
			if ( Editor.Documents.Item( i ).FullName == fullname ){ return i }
		}
		return -1;
	}
}
//--------------------
// GfB^
// VK쐬ď
Editor.NewFile();
Editor.Documents.Item( editor.Documents.Count-1 ).Writeln( string );
//--------------------
// NXIuWFNgЂȌ^
CLASSNAME = function(){
    this.initialize.apply( this, arguments );
}
CLASSNAME.prototype = {
	cx : '`',
	cy : '`',
	text : '`',
	initialize : function( cx, cy, str ){
		if ( typeof cx == 'number' ){ this.cx = cx; }
		this.cy = cy;
		str = str || null;
		if ( typeof str == 'string' ){ this.text = str; }
	},
	xxx : function(){
	}
}
//--------------------
// Nbv{[h
// 
ClipboardData.SetData( clpary.join( "\r\n" ) );
//--------------------
// Nbv{[h
// ǂݍ
var clp = ClipboardData.GetData();
var clpary = clp.replace( /\r\n/g, "\n" ).split( "\n" );
//--------------------
// t@C
// tH_pX̎擾
function getPath( file_FullPath, slashend ){ 
	// t@CpX{t@Č`ɂȂĂ邩mFB
	var reg = new RegExp( "^[a-zA-Z]:\\\\(.*\\\\)*[^\\\\]+$" );
	if ( !reg.test( file_FullPath ) ){ return "pattern error!" }
	if ( arguments.length < 2 ){ slashend = true }
	var ary = file_FullPath.split( "\\" )
	ary.splice( ary.length-1, 1 )
	return ( slashend )? ary.join( "\\" )+"\\": ary.join( "\\" );
}
//--------------------
// t@C
// tH_pX̎擾iȈՔŁj
function getPath( file_FullPath ){
	var ary = file_FullPath.split( "\\" );
	ary.pop();
	return ary.join( "\\" ) + "\\"
//	return ary.join( "\\" );
}
//--------------------
// t@C
// ݂̊mF
function fileExists( filename ){
	var objFso = new ActiveXObject( "Scripting.FileSystemObject" );
	var result = objFso.FileExists( filename );
	objFso = null;
	return result;
}
//--------------------
// t@C
// gq̃`FbN
function chkExt( filename, ext ){
	var f = filename.split( "\\" ).pop().split( "." );
	var fext = ( f.length >= 2 )? f.slice( -1 ).join( "" ): "";
	return ext.toUpperCase() == fext.toUpperCase();
}
//--------------------
// t@C
// 
// gq̕ύX
function changeExt( filename, ext ){
	var s = filename.split( "\\" );
	var f = s.pop().split( "." );
	if ( f.length >= 2 ){
		f.splice( -1, 1, ext );
	}else{
		f.push( ext );
	}
	s.push( f.join( "." ) );
	return s.join( "\\" );
}
//--------------------
// t@C
// 
// gq̈قȂt@C폜
var SFso = new ActiveXObject( "Scripting.FileSystemObject" );
var ary = new Array( "aux","dvi","log","pdf", "TMP", "txt" );
for ( var i in ary ){ 
	var file_delete.toUpperCase() = changeExt( fileFullName, ary[i] ).toUpperCase();
	if ( SFso.FileExists( file_delete ) ){ SFso.DeleteFile( file_delete ) }
}
SFso = null;
//--------------------
// t@C
// 
// ǂݍ
// QFI[v[hB
var openMode = { 
	FORREADING:   1,  // ǂݎp
	FORWRITING:   2,  // ݐp
	FORAPPENDING: 8   // ǉ
};
// RFt@C݂ȂꍇɁhtruehȂ쐬Bȗꍇ́Ahfalsehi쐬ȂjB
var create = {
	YES : true,
	NO  : false
}
// SFJt@Č`B
var format = {
	TRISTATE_TRUE       : -1, // Unicode
	TRISTATE_FALSE      :  0, // ASCII
	TRISTATE_USEDEFAULT : -2  // VXeftHg
}
var objFso = new ActiveXObject( "Scripting.FileSystemObject" );
var objFile = objFso.OpenTextFile( file_FullName, openMode.FORREADING, create.YES, format.TRISTATE_FALSE );

// sǂݍŔz
var array = [];
while ( !objFile.AtEndOfStream ){ array.push( objFile.ReadLine() );
}

// t@CČnB
objFile.Close();
objFile = null;
objFso = null;
//--------------------
// |bvAbvj[
var offset = 10; // Œ胁j[̏B
var menu = CreatePopupMenu();
var submenu = CreatePopupMenu();
var ary = []
for ( var i in ary ){ 
	var line = ary[i].split( "\n" );
	menu.Add( line[0], +i + offset, 0 );
}
menu.Add( "-------", 0, meMenuSeparator )
menu.AddPopup( "Tuj[", submenu );
	submenu.Add( "submenu1", 4, meMenuChecked );
var r = menu.Track( mePosMouse );

switch( r ){ 
	case 0:	break;
	case 4:
		break;
	default :
		Alert( ary[ r-offset ] );
}
//--------------------
// OvO̎s
// RuniȈՔŁj
var WshShell = new ActiveXObject( "WScript.Shell" );
var windowStyle = { HIDE: 0, NORMALFOCUS: 1 };
// I܂Ŏ֐i܂Ȃ悤3utruevɁB
WshShell.Run( cmd_ary.join( " & " ), windowStyle.NORMALFOCUS, true );
WshShell = null;
//--------------------
// OvO̎s
// Run + Wo͂̃_CNg
var stdout_log = changeExt( ScriptFullName, "log" );
var cmd_cd = 'cmd /c cd /d "' + getPath( stdout_log ) + '"';
var cmd_p = 'xxx "'+ pathdoc + '" >>"' + stdout_log + '" 2>&1';

var cmd_ary = [ 
	cmd_cd, 
	cmd_p
]

var WshShell = new ActiveXObject( "WScript.Shell" );
var windowStyle = { HIDE: 0, NORMALFOCUS: 1 };
// I܂Ŏ֐i܂Ȃ悤3utruevɁB
WshShell.Run( cmd_ary.join( " & " ), windowStyle.NORMALFOCUS, true );
WshShell = null;
//--------------------
// OvO̎s
// Exec
var cmd_cd = 'cmd /c cd /d "' + getPath( ScriptFullName ) + '"';
var cmd_p = 'ruby "' + myscript + '"';
var cmd_ary = [
	cmd_cd, 
	cmd_p
]

var WshShell = new ActiveXObject( "WScript.Shell" )
var objExec = WshShell.Exec( cmd_ary.join( " & " ) );

// Wo͂ƕWG[o͂̎擾
var errstr = "";
var stdstr = "";
var tryCount = 0;
var irregular = 0;
while ( tryCount < 256 && objExec.Status != 0){
	tryCount++; 
	// Wo͂ɓǂݍ܂ȂƁAWo͂obt@𖄂ߐsĂ
	// ꍇɃfbhbNɊׂB
	if ( !objExec.StdOut.AtEndOfStream ){ stdstr += objExec.StdOut.ReadAll(); tryCount = 0; };
	if ( !objExec.StdErr.AtEndOfStream ){ errstr += objExec.StdErr.ReadAll(); tryCount = 0; };
	irregular ++;
	if ( irregular > 1000 ){ Alert("StreamIȂIH"); break; }
}
// 擾Wo͂̓eVKhLgɏo
if ( stdstr.length > 0 ){
	Editor.NewFile();
	Editor.Documents.Item( editor.Documents.Count-1 ).Write( stdstr );
}
// 擾WG[o͂̓eVKhLgɏo
if ( errstr.length > 0 ){
	Editor.NewFile();
	Editor.Documents.Item( editor.Documents.Count-1 ).Write( errstr );
}
//--------------------
// OvO̎s
// ֘AtŎs
var filename = "____";
var trymax = 3;
var tryCount = 0;
var windowStyle = { HIDE: 0, NORMALFOCUS: 1 };
while ( tryCount < trymax ){ 
	if ( SFso.FileExists( pathpdf ) ){ 
		WshShell.Run( 'cmd /c "' + filename + '"', windowStyle.HIDE, false );
		break;
	}else{ 
		Sleep( 1000 );
		tryCount++ ;
	}
}
//--------------------
// 
( ____ )? ____: ____;
//--------------------
// 
if ( ____ ){
	____
}else{
	____
}
//--------------------
// 
switch ( var ){
	case :
		____
		break;
	case :
		____
		break;
	case :
		____
		break;
	default :
		____
}
//--------------------
// K\
// O[o
var reg = /\w+/g;
var result = reg.exec( src );
while ( result != null ){ 
	Alert ( result.index + "-" + result.lastIndex + ":\t" + result[0] );
	result = re.exec( src );
}
//--------------------
// K\
// vEsv̂݁itestj
var reg = new RegExp( "^[a-zA-Z]:\\\\( .*\\\\ )*$" ); // tH_
//var reg = new RegExp( "^[a-zA-Z]:\\\\( .*\\\\ )*[^\\\\]+$" ); // t@CtpX
if ( reg.test( strings ) ){ 
	Alert ( "found" );
}else{  
	Alert ( "not found" );
}
//--------------------
// K\
// Q
var src = "Please send mail to george@contoso.com and someone@example.com. Thanks!";
var reg = /(\w+)@(\w+)\.(\w+)/g;
var result = reg.exec( src );
while ( result != null ) { 
	Alert ( "e-mail address: " + result[0] );
	Alert ( "user name: " + result[1] );
	Alert ( "host name: " + result[2] );
	Alert ( "top-level domain: " + result[3] );
	result = reg.exec( src );
}
//--------------------
// K\
// ŏ̃}b`iexecj
var reg = /\w+/;
var result = reg.exec( src );
if ( result == null ){ 
	Alert ( "not found" );
}else{  
	Alert ( result.index + "-" + result.lastIndex + ":\t" + result[ 0 ] );
}
//--------------------
// mF_CAO{bNX
// ȈՔ
var rtn = { OK: 1, CANCL: 2, STOP: 3, RETRI: 4, DISRGRD: 5, YES: 6, NO: 7, NOT: -1 }
function makeSure( mes ){
	var btn = { OK: 0, OK_CANCL: 1, STOP_RETRI_DISRGRD: 2, YES_NO_CANCL: 3 ,YES_NO: 4 }
	var icon = { STOP: 16, QUESTN : 32, EXCLA: 48, I: 64 }
	var WshShell = new ActiveXObject( "WScript.Shell" );
	return WshShell.Popup( mes + "\n܂H", 5, "mF", btn.YES_NO + icon.EXCLA );
}
//--------------------
// mF_CAO{bNX
// ڍה
// {^
var BTN_OK                 = 0;  // [nj]
var BTN_OK_CANCL           = 1;  // [nj][LZ]
var BTN_STOP_RETRI_DISRGRD = 2;  // [~][Ďs][]
var BTN_YES_NO_CANCL       = 3;  // [͂][][LZ]
var BTN_YES_NO             = 4;  // [͂][]
var BTN_RETRI_CANCL        = 5;  // [Ďs][LZ]
// ACR
var ICON_STOP   = 16;  // [Stop]
var ICON_QUESTN = 32;  // [?]
var ICON_EXCLA  = 48;  // [!]
var ICON_I      = 64;  // [i]
// ߂l
var BTNR_OK      = 1;  // [nj]
var BTNR_CANCL   = 2;  // [LZ]
var BTNR_STOP    = 3;  // [~]
var BTNR_RETRI   = 4;  // [Ďs]
var BTNR_DISRGRD = 5;  // []
var BTNR_YES     = 6;  // [͂]
var BTNR_NO      = 7;  // []
var BTNR_NOT     = -1; // ǂ̃{^Ȃ

var WshShell = new ActiveXObject( "WScript.Shell" );

// |bvAbvEChE\iXbɎIj
var rtn = WshShell.Popup( "Xbɕ܂", 9, "mF", BTN_YES_NO + ICON_EXCLA );

// ߂l\
WshShell.Popup( "߂l[ " + rtn + " ]łB", 0, "", BTN_OK + ICON_I );

