<html>
<head>
<HTA:APPLICATION ID="oWPLUpdate" 
APPLICATIONNAME="WPLUpdate" 
BORDER="solid"
CAPTION="yes"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
SYSMENU="yes"
WINDOWSTATE="restore">
<title>Update WPL</title>
<style type="text/css">body{background:#c0c0c0;margin:12px;}input#txt_path{width:600px;}</style>
</head><body>
<div><input type="text" id="txt_path" accesskey="j" /><br /><input type="button" id="btn_submit" value="submit" /></div>
<script type='text/javascript' src='http://jaymze.org/support/js/ajaxgold.js'></script>
<script type='text/javascript'>

function Specs(){
	this.asLeaf = new Array();
	this.asBranch = new Array();
	this.asNonAscii = new Array();
	return;
}
var FFS = new Specs;

function ShowFolderFileList(folderspec){
   var fso, f, fc, s,bFile;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
  fc = new Enumerator(f.SubFolders);
  var iFolders = 0;
   for (; !fc.atEnd(); fc.moveNext())
   {
		FFS.asBranch.push(fc.item());
		++iFolders;
	}
	if(iFolders==0){
		fcf = new Enumerator(f.files);
		for (; !fcf.atEnd(); fcf.moveNext()){
//			FFS.asLeaf.push(fcf.item());
			FFS.asLeaf.push(fcf.item());
		}
	}
	if(FFS.asBranch.length > 0){
		var sFolderNext = FFS.asBranch.shift();
		ShowFolderFileList(sFolderNext);
	}
   return;
}
function testInvalidUnicode(iCCA){
	res=true;
// 0-9 is 48-57, A-Z is 65-90, . is 48, space is 32, a-z is 97-122
	if((96 < iCCA && iCCA < 122) || (47<iCCA && iCCA < 58) || (64 < iCCA && iCCA < 91) || iCCA ==46){
		res=false;
	}
	return res;
}

function findNonAscii(){
	var fso = new ActiveXObject("Scripting.FileSystemObject");
	for(var i = 0; i < FFS.asLeaf.length; ++i){
		var bInvalid = false;
		var temp = FFS.asLeaf[i];
		var f = fso.GetFile(temp);
		var n = f.Name;
		for(var j = 0; j < n.length; ++j){
			var iCCA = n.charCodeAt(j);
			if(testInvalidUnicode(iCCA)){
				bInvalid = true;
				break;
			}
		}
		if(bInvalid){
			FFS.asNonAscii.push(temp);
		}
	}
	return;
}
function replaceInvalidChrs(sN){
	asSub = new Array();
	for(var i = 0; i < sN.length; ++i ){
		var iCCA = sN.charCodeAt(i);
		var s=sN.charAt(i);
		if(testInvalidUnicode(iCCA)){s = "";}
		asSub.push(s);
	}
	var res = asSub.join("");
	return res;
}
function copyNonAscii(){
	var fso,f;
	fso = new ActiveXObject("Scripting.FileSystemObject");
	for(var i = 0; i < FFS.asNonAscii.length; ++i){
		f = fso.GetFile(FFS.asNonAscii[i]);
		var sName = replaceInvalidChrs(f.Name);
		f.copy(f.ParentFolder + "\\"+sName);
		f.Delete();
	}
	return;
}
function writeNonAscii(){
	var fso=new ActiveXObject("Scripting.FileSystemObject");
	var f = fso.CreateTextFile("E:\\temp\\nonAscii.txt");
	f.Write(FFS.asNonAscii.join("\n"));
	f.Close();
	return;
}
function getPathFromNotepad(){
	var ForReading = 1, ForWriting = 2;
	var fso = new ActiveXObject("Scripting.FileSystemObject");
	var a = fso.OpenTextFile("C:\\myprog\\update_wpl\\path.txt", ForReading);
	var sPath = a.ReadLine();
	a.Close();
   var f = fso.OpenTextFile("C:\\myprog\\update_wpl\\path.txt", ForWriting, true)
   f.Write("");
   f.Close();
	return sPath;
}
function CompressFileNames(){
//	var sPath = getPathFromNotepad();
	var sPath = document.getElementById("txt_path").value;
	sPath = sPath.replace(/\\/g, "\\\\");
	if(confirm("Proceed?")){
		ShowFolderFileList(sPath);
		findNonAscii();
		copyNonAscii();
		//writeNonAscii();
		//alert(FFS.asNonAscii.join("\n"));
		alert("END TRANS");
	}
}
document.getElementById("btn_submit").onclick=CompressFileNames;
</script>
</body>
</html>