function writerecordset2file(rs2write,faelname) {
	wrs2fi=0
	var wrs2farray = new Array()
	wrs2fargs=rs2write
	wrs2fargdims=argdims(wrs2fargs)
	myfilesystem = new ActiveXObject("Scripting.FileSystemObject")
	myFile = myfilesystem.OpenTextFile(faelname,8,true,0)
	while (wrs2fi<rs2write.length) {
		myFile.WriteLine(rs2write[wrs2fi])
		wrs2fi++
	}
	myFile.close()
}
function readfile2recordset(faelname) {
	var rf2rsarray = new Array()
	myfilesystem = new ActiveXObject("Scripting.FileSystemObject")
	myFile = myfilesystem.OpenTextFile(faelname,1,true,0)
	while (myFile.AtEndOfLine==false) {
		rf2rsarray[rf2rsarray.length]=myFile.ReadLine().split(',')
	}
	myFile.close()
	return rf2rsarray
}
function anonfunc(afcmd) {
	var affunc = new Function(afcmd)
	affunc()
}
function anonfuncarg(afaarg,afacommand) {
	var afafunc = new Function(afaarg,afacommand)
	return afafunc(afaarg,afacommand)
}
function getrecord(faelname,grcriterion) {
	//Example usage:  myVar=getrecord(myFileName,"grtemparray[gri][0]!='pat' & grtemparray[gri][0]!='richie'")
	var gransarray = new Array()
	grtemparray = readfile2recordset(faelname)
	gri=0
	grcommand="var gransarray = new Array();while (gri<grtemparray.length) {if ("+grcriterion+") {gransarray[gransarray.length]=grtemparray[gri]};gri++};return gransarray"
	return anonfuncarg(gransarray,grcommand)
}
function tablelookup(faelname,grcrit,gccrit) {
	//Example usage:  myVar=getrowindex(fn,"grtemparray[gri][0]=='6'")
	grcriterion='grtemparray[gri][0]=='+grcrit
	gccriterion='grtemparray[0][gri]=='+gccrit
	grtemparray = readfile2recordset(faelname)
	var gransarray = new Array()
	gri=0
	grans=-1
	grcommand="var gransarray = new Array();while (gri<grtemparray.length) {if ("+grcriterion+") {grans=gri};gri++};return grans"
	grirowindex=anonfuncarg(gransarray,grcommand)
	var gransarray = new Array()
	gri=0
	grans=-1
	gccommand="var gransarray = new Array();while (gri<grtemparray.length) {if ("+gccriterion+") {grans=gri};gri++};return grans"
	gricolumnindex=anonfuncarg(gransarray,gccommand)
	return grtemparray[grirowindex][gricolumnindex]
}
function rslookup(rslurs,grcrit,gccrit) {
	//Example usage:  myVar=getrowindex(fn,"grtemparray[gri][0]=='6'")
	grcriterion='grtemparray[gri][0]==\''+grcrit+'\''
	gccriterion='grtemparray[0][gri]==\''+gccrit+'\''
	grtemparray = rslurs
	var gransarray = new Array()
	gri=0
	grans=-1
	grcommand="var gransarray = new Array();while (gri<grtemparray.length) {if ("+grcriterion+") {grans=gri};gri++};return grans"
	grirowindex=anonfuncarg(gransarray,grcommand)
	var gransarray = new Array()
	gri=0
	grans=-1
	gccommand="var gransarray = new Array();while (gri<grtemparray.length) {if ("+gccriterion+") {grans=gri};gri++};return grans"
	gricolumnindex=anonfuncarg(gransarray,gccommand)
	return grtemparray[grirowindex][gricolumnindex]
}
function replacerecord(faelname,rrcriterion,rraction) {
	//Example usage:  myVar=replacerecord(fn,"rrtemparray[rri][0]!='pat' & rrtemparray[rri][0]!='richie'","rransarray[rri][0]='ed'")
	var rransarray = new Array()
	var rrans2array = new Array()
	rrtemparray = readfile2recordset(faelname)
	rri=0
	rrcommand="var rransarray = new Array();while (rri<rrtemparray.length) {rransarray[rransarray.length]=rrtemparray[rri];if ("+rrcriterion+") {"+rraction+"};rri++};return rransarray"
	rrans2array=anonfuncarg(rransarray,rrcommand)
	if (fileexist(faelname)==true) {
		deletefile(faelname)
	}
	writerecordset2file(rrans2array,faelname)
}
function sortrecordset(srsrs,column2sort) {
	var temploc = new Array()
	var inorder = 0
	var sfi = 0
	while (inorder==0) {
		sfi = 0
		inorder=1
		while (sfi<srsrs.length-1) {
			if (srsrs[sfi][column2sort]>srsrs[sfi+1][column2sort]) {
				temploc=srsrs[sfi]
				srsrs[sfi]=srsrs[sfi+1]
				srsrs[sfi+1]=temploc
				inorder=0
			}
			sfi++
		}
	}
	return srsrs
}
function sortcsv(fn,column2sortby) {
	rs=readfile2recordset2(fn)
	rs2=sortrecordset(rs,column2sortby)
	rs3=removequotesfromrecordset(rs2)
	if (fileexist(fn)) {
		deletefile(fn)
	}
	writerecordset2file(rs3,fn)
}
function recordsettabledisplay() {
	mtdargdims=argdims(arguments)
	mtdcontinue=true
		mtdargs=arguments[0]
	if (mtdcontinue==true) {
		mtdtemp=transpose(mtdargs)
		mtdtemp=mtdargs
		mtdcoli=0
		mtdrowi=0
		document.writeln('<table border="1"><tbody>')
		while (mtdrowi<mtdargdims[2]) {
			document.write('<tr height="30px">')
			while (mtdcoli<mtdargdims[3]) {
				document.write('<td><center>')
				document.write(mtdtemp[mtdrowi][mtdcoli])
				document.write('</center></td>')
				mtdcoli++
			}
			document.write('</tr>')
			mtdcoli=0
			mtdrowi++
		}
		document.writeln('</tbody></table>')
	}
}
function arrangerecordsetcolumns(arscrs,columnorderarray) {
	arscrstemp=dimmatrix(arscrs.length)
	arscri=0
	arscci=0
	while (arscri<arscrs.length) {
		while (arscci<arscrs[0].length) {
			arscrstemp[arscri][arscci]=arscrs[arscri][columnorderarray[arscci]]
			arscci++
		}
		arscci=0
		arscri++
	}
	return arscrstemp
}
function arrangecsvcolumns(fn,columnorderarray) {
	rs=readfile2recordset(fn)
	rs2=arrangerecordsetcolumns(rs,coa)
	if (fileexist(fn)) {
		deletefile(fn)
	}
	writerecordset2file(rs2,fn)
}
