<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Mind Cemetery</title>
	<atom:link href="http://mindcemetery.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mindcemetery.wordpress.com</link>
	<description></description>
	<lastBuildDate>Mon, 02 Nov 2009 16:46:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mindcemetery.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Mind Cemetery</title>
		<link>http://mindcemetery.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mindcemetery.wordpress.com/osd.xml" title="Mind Cemetery" />
	<atom:link rel='hub' href='http://mindcemetery.wordpress.com/?pushpress=hub'/>
		<item>
		<title>JavaScript LINQ</title>
		<link>http://mindcemetery.wordpress.com/2009/11/02/javascript-linq/</link>
		<comments>http://mindcemetery.wordpress.com/2009/11/02/javascript-linq/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 16:43:35 +0000</pubDate>
		<dc:creator>slyprid</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JScript]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[TestComplete]]></category>

		<guid isPermaLink="false">http://mindcemetery.wordpress.com/?p=16</guid>
		<description><![CDATA[Since I&#8217;ve been using a lot of JavaScript recently and doing database queries, I thought it would be nice to be able to use LINQ.  So instead of attempting to try to bring in actual .NET CLR stuff into JavaScript for my tests, I thought I would write my own version.  So here it is&#8230; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=16&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Since I&#8217;ve been using a lot of JavaScript recently and doing database queries, I thought it would be nice to be able to use LINQ.  So instead of attempting to try to bring in actual .NET CLR stuff into JavaScript for my tests, I thought I would write my own version.  So here it is&#8230;</p>
<div id="_mcePaste"><span style="font-family:Verdana, Arial, Helvetica, sans-serif;line-height:normal;">- Example Usage<br />
[jScript]</span></div>
<div><span style="font-family:Verdana, Arial, Helvetica, sans-serif;line-height:normal;"><pre class="brush: plain;">
var q = new Query(&quot;SERVER\\INSTANCE&quot;, &quot;Database&quot;);
var lowerCaseMethod = q.select(&quot;*&quot;).from(&quot;MyTable&quot;).execute();
var upperCaseMethod = q.SELECT(&quot;*&quot;).FROM(&quot;MyTable&quot;).EXECUTE();
var camelCaseMethod = q.Select(&quot;*&quot;).From(&quot;MyTable&quot;).Execute();
var shortHandMethod = q.s(&quot;*&quot;).f(&quot;MyTable&quot;).x();
// Each of these will return the same results

</pre></p>
<p>&nbsp;</p>
<p></span></div>
<div>
<pre>- Query Class
<pre class="brush: plain;">
//////////////////////////////////////////////////
// JavaScript LINQ
//////////////////////////////////////////////////

function Query(server, database, provider)
{
	if(server == null) { Log.Error(&quot;Query Error: Server not provided.&quot;); return null; }
	if(database == null) { Log.Error(&quot;Query Error: Database not provided.&quot;); return null; }

	// Properties
	this.Connection		= null;
	this.ConnectionString   = null;
	this.Provider		= (provider == null ? &quot;SQLNCLI10&quot; : provider);
	this.Server			= server;
	this.Database		= database;
	this.RecordSet		= null;
	this.Command		= null;
	this.query 			= &quot;&quot;;	

	// Database Connection Commands
	this.Connect		= Query_Connect;
	this.Open			= Query_Open;
	this.Close			= Query_Close;
	this.RecordSetToList	= Query_RecordSetToList;

	this.Execute		= Query_Execute;
	this.ex			= Query_Execute;
	this.EX			= Query_Execute;
	this.run			= Query_Execute;
	this.RUN			= Query_Execute;
	this.X			= Query_Execute;
	this.x			= Query_Execute;

	// ---------------------------------------------------------------------------------------------------
	// SQL Commands - LowerCase
	// ---------------------------------------------------------------------------------------------------
	//									// Syntax				=&gt; Results
	// ---------------------------------------------------------------------------------------------------
	this.and			= Query_And;			// obj.and(condition)		=&gt; AND condition
	this.or			= Query_Or;				// obj.or(condition)		=&gt; OR condition
	this.altertable		= Query_AlterTable;		// obj.altertable(table)	=&gt; ALTER TABLE table
	this.as			= Query_As;				// obj.as(alias)			=&gt; AS alias
	this.between		= Query_Between;			// obj.between(val1, val2)	=&gt; BETWEEN val1 AND val2
	this.createdatabase	= Query_CreateDatabase;		// obj.createdatabase(db)	=&gt; CREATE DATABASE db
	this.createtable		= Query_CreateTable; 		// obj.createtable(table, col, dataType, col2, dataType2, ...) =&gt; CREATE TABLE table(col1 dataType, col2, dataType2, ...)
	this.createindex		= Query_CreateIndex;		// obj.createindex(index)	=&gt; CREATE INDEX index
	this.createuniqueindex	= Query_CreateUniqueIndex;	// obj.createuniqueindex(index)=&gt;CREATE UNIQUE INDEX index
	this.createview		= Query_CreateView;		// obj.createview(view)		=&gt; CREATE VIEW view AS
	this.deletefrom		= Query_DeleteFrom;		// obj.deletefrom(table)	=&gt; DELETE FROM table
	this.del			= Query_Delete;			// obj.delete(select,table)	=&gt; DELETE select FROM table
	this.drop			= Query_Drop;			// obj.drop(db)			=&gt; DROP DATABASE db
	this.dropcolumn		= Query_DropColumn;		// obj.dropcolumn(col)		=&gt; DROP COLUMN col
	this.dropindex		= Query_DropIndex;		// obj.dropindex(table,index)	=&gt; DROP INDEX table.index
	this.droptable		= Query_DropTable;		// obj.droptable(table)		=&gt; DROP TABLE table
	this.from			= Query_From;			// obj.from(value)		=&gt; FROM value
	this.groupby		= Query_GroupBy;			// obj.groupby(col)		=&gt; GROUP BY col
	this.having			= Query_Having;			// obj.having(func,col,op,val)=&gt; HAVING func(col) op val
	this._in			= Query_In;				// obj.in(val1, val2, ...)	=&gt; IN (val1, val2, ...)
	this.iin			= Query_In;				// obj.in(val1, val2, ...)	=&gt; IN (val1, val2, ...)
	this.in_			= Query_In;				// obj.in(val1, val2, ...)	=&gt; IN (val1, val2, ...)
	this.inn			= Query_In;				// obj.in(val1, val2, ...)	=&gt; IN (val1, val2, ...)
	this.insertinto		= Query_InsertInto;		// obj.insertinto(table,c,v,.)=&gt; INSERT INTO table (col1, col2, ...) VALUSE (val1, val2, ...)
	this.innerjoin		= Query_InnerJoin;		// obj.innerjoin(table)		=&gt; INNER JOIN table
	this.leftjoin		= Query_LeftJoin;			// obj.leftjoin(table)		=&gt; LEFT JOIN table
	this.rightjoin		= Query_RightJoin;		// obj.rightjoin(table)		=&gt; RIGHT JOIN table
	this.fulljoin		= Query_FullJoin;			// obj.fulljoin(table)		=&gt; FULL JOIN table
	this.like			= Query_Like;			// obj.like(pattern)		=&gt; LIKE pattern
	this.on			= Query_On;				// obj.on(table, col)		=&gt; ON table(col)
	this.orderby		= Query_OrderBy;			// obj.orderby(col, dir)	=&gt; ORDER BY col [ASC|DESC]
	this.select			= Query_Select;			// obj.select(value)		=&gt; SELECT value
	this.selectdistinct	= Query_SelectDistinct;		// obj.selectdistinct(col,tab)=&gt; SELECT DISTINCT col FROM table
	this.selectinto		= Query_SelectInto;		// obj.selectinto(col,table)	=&gt; SELECT col INTO table
	this.selecttop		= Query_SelectTop;		// obj.selecttop(value)		=&gt; SELECT TOP value
	this.truncatetable	= Query_TruncateTable;		// obj.truncatetable(table)	=&gt; TRUNCATE TABLE table
	this.union			= Query_Union;			// obj.union(col, table)	=&gt; UNION SELECT col FROM table
	this.unionall		= Query_UnionAll;			// obj.unionall(col,table)	=&gt; UNION ALL SELECT col FROM table
	this.update			= Query_Update;			// obj.update(table)		=&gt; UPDATE table
	this.where			= Query_Where;			// obj.where(value)		=&gt; WHERE value
	this.y			= Query_Y;				// obj.y(value)			=&gt; value

	// ---------------------------------------------------------------------------------------------------
	// SQL Commands - UpperCase
	// ---------------------------------------------------------------------------------------------------
	//									// Syntax				=&gt; Results
	// ---------------------------------------------------------------------------------------------------
	this.AND			= Query_And;			// obj.and(condition)		=&gt; AND condition
	this.OR			= Query_Or;				// obj.or(condition)		=&gt; OR condition
	this.ALTERTABLE		= Query_AlterTable;		// obj.altertable(table)	=&gt; ALTER TABLE table
	this.AS			= Query_As;				// obj.as(alias)			=&gt; AS alias
	this.BETWEEN		= Query_Between;			// obj.between(val1, val2)	=&gt; BETWEEN val1 AND val2
	this.CREATEDATABASE	= Query_CreateDatabase;		// obj.createdatabase(db)	=&gt; CREATE DATABASE db
	this.CREATETABLE		= Query_CreateTable; 		// obj.createtable(table, col, dataType, col2, dataType2, ...) =&gt; CREATE TABLE table(col1 dataType, col2, dataType2, ...)
	this.CREATEINDEX		= Query_CreateIndex;		// obj.createindex(index)	=&gt; CREATE INDEX index
	this.CREATEUNIQUEINDEX	= Query_CreateUniqueIndex;	// obj.createuniqueindex(index)=&gt;CREATE UNIQUE INDEX index
	this.CREATEVIEW		= Query_CreateView;		// obj.createview(view)		=&gt; CREATE VIEW view AS
	this.DELETEFROM		= Query_DeleteFrom;		// obj.deletefrom(table)	=&gt; DELETE FROM table
	this.DEL			= Query_Delete;			// obj.delete(select,table)	=&gt; DELETE select FROM table
	this.DELETE			= Query_Delete;			// obj.delete(select,table)	=&gt; DELETE select FROM table
	this.DROP			= Query_Drop;			// obj.drop(db)			=&gt; DROP DATABASE db
	this.DROPCOLUMN		= Query_DropColumn;		// obj.dropcolumn(col)		=&gt; DROP COLUMN col
	this.DROPINDEX		= Query_DropIndex;		// obj.dropindex(table,index)	=&gt; DROP INDEX table.index
	this.DROPTABLE		= Query_DropTable;		// obj.droptable(table)		=&gt; DROP TABLE table
	this.FROM			= Query_From;			// obj.from(value)		=&gt; FROM value
	this.GROUPBY		= Query_GroupBy;			// obj.groupby(col)		=&gt; GROUP BY col
	this.HAVING			= Query_Having;			// obj.having(func,col,op,val)=&gt; HAVING func(col) op val
	this.IN			= Query_In;				// obj.in(val1, val2, ...)	=&gt; IN (val1, val2, ...)
	this.INSERTINTO		= Query_InsertInto;		// obj.insertinto(table,c,v,.)=&gt; INSERT INTO table (col1, col2, ...) VALUSE (val1, val2, ...)
	this.INNERJOIN		= Query_InnerJoin;		// obj.innerjoin(table)		=&gt; INNER JOIN table
	this.LEFTJOIN		= Query_LeftJoin;			// obj.leftjoin(table)		=&gt; LEFT JOIN table
	this.RIGHTJOIN		= Query_RightJoin;		// obj.rightjoin(table)		=&gt; RIGHT JOIN table
	this.FULLJOIN		= Query_FullJoin;			// obj.fulljoin(table)		=&gt; FULL JOIN table
	this.LIKE			= Query_Like;			// obj.like(pattern)		=&gt; LIKE pattern
	this.ON			= Query_On;				// obj.on(table, col)		=&gt; ON table(col)
	this.ORDERBY		= Query_OrderBy;			// obj.orderby(col, dir)	=&gt; ORDER BY col [ASC|DESC]
	this.SELECT			= Query_Select;			// obj.select(value)		=&gt; SELECT value
	this.SELECTDISTINCT	= Query_SelectDistinct;		// obj.selectdistinct(col,tab)=&gt; SELECT DISTINCT col FROM table
	this.SELECTINTO		= Query_SelectInto;		// obj.selectinto(col,table)	=&gt; SELECT col INTO table
	this.SELECTTOP		= Query_SelectTop;		// obj.selecttop(value)		=&gt; SELECT TOP value
	this.TRUNCATETABLE	= Query_TruncateTable;		// obj.truncatetable(table)	=&gt; TRUNCATE TABLE table
	this.UNION			= Query_Union;			// obj.union(col, table)	=&gt; UNION SELECT col FROM table
	this.UNIONALL		= Query_UnionAll;			// obj.unionall(col,table)	=&gt; UNION ALL SELECT col FROM table
	this.UPDATE			= Query_Update;			// obj.update(table)		=&gt; UPDATE table
	this.WHERE			= Query_Where;			// obj.where(value)		=&gt; WHERE value
	this.Y			= Query_Y;				// obj.y(value)			=&gt; value

	// ---------------------------------------------------------------------------------------------------
	// SQL Commands - CamelCase
	// ---------------------------------------------------------------------------------------------------
	//									// Syntax				=&gt; Results
	// ---------------------------------------------------------------------------------------------------
	this.And			= Query_And;			// obj.and(condition)		=&gt; AND condition
	this.Or			= Query_Or;				// obj.or(condition)		=&gt; OR condition
	this.AlterTable		= Query_AlterTable;		// obj.altertable(table)	=&gt; ALTER TABLE table
	this.As			= Query_As;				// obj.as(alias)			=&gt; AS alias
	this.Between		= Query_Between;			// obj.between(val1, val2)	=&gt; BETWEEN val1 AND val2
	this.CreateDatabase	= Query_CreateDatabase;		// obj.createdatabase(db)	=&gt; CREATE DATABASE db
	this.CreateTable		= Query_CreateTable; 		// obj.createtable(table, col, dataType, col2, dataType2, ...) =&gt; CREATE TABLE table(col1 dataType, col2, dataType2, ...)
	this.CreateIndex		= Query_CreateIndex;		// obj.createindex(index)	=&gt; CREATE INDEX index
	this.CreateUniqueIndex	= Query_CreateUniqueIndex;	// obj.createuniqueindex(index)=&gt;CREATE UNIQUE INDEX index
	this.CreateView		= Query_CreateView;		// obj.createview(view)		=&gt; CREATE VIEW view AS
	this.DeleteFrom		= Query_DeleteFrom;		// obj.deletefrom(table)	=&gt; DELETE FROM table
	this.Del			= Query_Delete;			// obj.delete(select,table)	=&gt; DELETE select FROM table
	this.Delete			= Query_Delete;			// obj.delete(select,table)	=&gt; DELETE select FROM table
	this.Drop			= Query_Drop;			// obj.drop(db)			=&gt; DROP DATABASE db
	this.DropColumn		= Query_DropColumn;		// obj.dropcolumn(col)		=&gt; DROP COLUMN col
	this.DropIndex		= Query_DropIndex;		// obj.dropindex(table,index)	=&gt; DROP INDEX table.index
	this.DropTable		= Query_DropTable;		// obj.droptable(table)		=&gt; DROP TABLE table
	this.From			= Query_From;			// obj.from(value)		=&gt; FROM value
	this.GroupBy		= Query_GroupBy;			// obj.groupby(col)		=&gt; GROUP BY col
	this.Having			= Query_Having;			// obj.having(func,col,op,val)=&gt; HAVING func(col) op val
	this.In			= Query_In;				// obj.in(val1, val2, ...)	=&gt; IN (val1, val2, ...)
	this.InsertInto		= Query_InsertInto;		// obj.insertinto(table,c,v,.)=&gt; INSERT INTO table (col1, col2, ...) VALUSE (val1, val2, ...)
	this.InnerJoin		= Query_InnerJoin;		// obj.innerjoin(table)		=&gt; INNER JOIN table
	this.LeftJoin		= Query_LeftJoin;			// obj.leftjoin(table)		=&gt; LEFT JOIN table
	this.RightJoin		= Query_RightJoin;		// obj.rightjoin(table)		=&gt; RIGHT JOIN table
	this.FullJoin		= Query_FullJoin;			// obj.fulljoin(table)		=&gt; FULL JOIN table
	this.Like			= Query_Like;			// obj.like(pattern)		=&gt; LIKE pattern
	this.On			= Query_On;				// obj.on(table, col)		=&gt; ON table(col)
	this.OrderBy		= Query_OrderBy;			// obj.orderby(col, dir)	=&gt; ORDER BY col [ASC|DESC]
	this.Select			= Query_Select;			// obj.select(value)		=&gt; SELECT value
	this.SelectDistinct	= Query_SelectDistinct;		// obj.selectdistinct(col,tab)=&gt; SELECT DISTINCT col FROM table
	this.SelectInto		= Query_SelectInto;		// obj.selectinto(col,table)	=&gt; SELECT col INTO table
	this.SelectTop		= Query_SelectTop;		// obj.selecttop(value)		=&gt; SELECT TOP value
	this.TruncateTable	= Query_TruncateTable;		// obj.truncatetable(table)	=&gt; TRUNCATE TABLE table
	this.Union			= Query_Union;			// obj.union(col, table)	=&gt; UNION SELECT col FROM table
	this.UnionAll		= Query_UnionAll;			// obj.unionall(col,table)	=&gt; UNION ALL SELECT col FROM table
	this.Update			= Query_Update;			// obj.update(table)		=&gt; UPDATE table
	this.Where			= Query_Where;			// obj.where(value)		=&gt; WHERE value	

	// ---------------------------------------------------------------------------------------------------
	// SQL Commands - ShortHand
	// ---------------------------------------------------------------------------------------------------
	//									// Syntax				=&gt; Results
	// ---------------------------------------------------------------------------------------------------
	this.a			= Query_And;			// obj.and(condition)		=&gt; AND condition
	this.at			= Query_AlterTable;		// obj.altertable(table)	=&gt; ALTER TABLE table
	this.b			= Query_Between;			// obj.between(val1, val2)	=&gt; BETWEEN val1 AND val2
	this.cd			= Query_CreateDatabase;		// obj.createdatabase(db)	=&gt; CREATE DATABASE db
	this.ct			= Query_CreateTable; 		// obj.createtable(table, col, dataType, col2, dataType2, ...) =&gt; CREATE TABLE table(col1 dataType, col2, dataType2, ...)
	this.ci			= Query_CreateIndex;		// obj.createindex(index)	=&gt; CREATE INDEX index
	this.cui			= Query_CreateUniqueIndex;	// obj.createuniqueindex(index)=&gt;CREATE UNIQUE INDEX index
	this.cv			= Query_CreateView;		// obj.createview(view)		=&gt; CREATE VIEW view AS
	this.df			= Query_DeleteFrom;		// obj.deletefrom(table)	=&gt; DELETE FROM table
	this.d			= Query_Drop;			// obj.drop(db)			=&gt; DROP DATABASE db
	this.dc			= Query_DropColumn;		// obj.dropcolumn(col)		=&gt; DROP COLUMN col
	this.di			= Query_DropIndex;		// obj.dropindex(table,index)	=&gt; DROP INDEX table.index
	this.dt			= Query_DropTable;		// obj.droptable(table)		=&gt; DROP TABLE table
	this.f			= Query_From;			// obj.from(value)		=&gt; FROM value
	this.gb			= Query_GroupBy;			// obj.groupby(col)		=&gt; GROUP BY col
	this.h			= Query_Having;			// obj.having(func,col,op,val)=&gt; HAVING func(col) op val
	this.i			= Query_In;				// obj.in(val1, val2, ...)	=&gt; IN (val1, val2, ...)
	this.ii			= Query_InsertInto;		// obj.insertinto(table,c,v,.)=&gt; INSERT INTO table (col1, col2, ...) VALUSE (val1, val2, ...)
	this.ij			= Query_InnerJoin;		// obj.innerjoin(table)		=&gt; INNER JOIN table
	this.lj			= Query_LeftJoin;			// obj.leftjoin(table)		=&gt; LEFT JOIN table
	this.rj			= Query_RightJoin;		// obj.rightjoin(table)		=&gt; RIGHT JOIN table
	this.fj			= Query_FullJoin;			// obj.fulljoin(table)		=&gt; FULL JOIN table
	this.l			= Query_Like;			// obj.like(pattern)		=&gt; LIKE pattern
	this.ob			= Query_OrderBy;			// obj.orderby(col, dir)	=&gt; ORDER BY col [ASC|DESC]
	this.s			= Query_Select;			// obj.select(value)		=&gt; SELECT value
	this.sd			= Query_SelectDistinct;		// obj.selectdistinct(col,tab)=&gt; SELECT DISTINCT col FROM table
	this.si			= Query_SelectInto;		// obj.selectinto(col,table)	=&gt; SELECT col INTO table
	this.st			= Query_SelectTop;		// obj.selecttop(value)		=&gt; SELECT TOP value
	this.tt			= Query_TruncateTable;		// obj.truncatetable(table)	=&gt; TRUNCATE TABLE table
	this.u			= Query_Union;			// obj.union(col, table)	=&gt; UNION SELECT col FROM table
	this.ua			= Query_UnionAll;			// obj.unionall(col,table)	=&gt; UNION ALL SELECT col FROM table
	this.up			= Query_Update;			// obj.update(table)		=&gt; UPDATE table
	this.w			= Query_Where;			// obj.where(value)		=&gt; WHERE value
}

//////////////////////////////////////////////////
// Connection Methods
//////////////////////////////////////////////////

function Query_Connect()
{
	if(this.Server == null || this.Server == &quot;&quot;) { Log.Error(&quot;Cannot connect to database. No server provided.&quot;); return; }

	this.Connection = ADO.CreateConnection();
	this.ConnectionString = &quot;Provider=&quot; + this.Provider + &quot;; Server=&quot; + this.Server + &quot;; &quot; + (this.Database == null || this.Database == &quot;&quot; ? &quot;&quot; : &quot;Database=&quot; + this.Database + &quot;; &quot;) + &quot; Integrated Security=SSPI;&quot;;
	this.Connection.ConnectionString = this.ConnectionString;
}

function Query_Open()
{
	this.Connection.Open();
}

function Query_Close()
{
	this.Connection.Close();
}

function Query_Execute()
{
	try
	{
		this.Connect();
		this.Open();
		this.RecordSet 			= null;
	      this.Command 			= ADO.CreateCommand();
	      this.Command.ActiveConnection = this.Connection;
	      this.Command.CommandType 	= 1;
	      this.Command.CommandText 	= this.query;
	      this.Command.CommandTimeout 	= 5000;
	      this.RecordSet 			= this.Command.Execute();
		var out = this.RecordSet.GetString(2, this.RecordSet.RecordCount, &quot;,&quot;, &quot;|&quot;);
		var ret = this.RecordSetToList(out);
		this.Close();
		return ret;
	}
	catch(ex)
	{
		Log.Error(&quot;Failed to execute SQL query [&quot; + this.query + &quot;]&quot;, ex.description);
		return ex.description;
	}
}

function Query_RecordSetToList(RecordSet)
{
	var ret = new Array();
	var index = 0;
	var rows = RecordSet.split(&quot;|&quot;);

	for(var i = 0; i &lt; rows.length; i++)
	{
		var rowList = new Array();
		var index2 = 0;
		var row = rows[i];
		var cells = row.split(&quot;,&quot;);
		for(var j = 0; j &lt; cells.length; j++)
		{
			var cell = cells[j];
			rowList[index2++] = cell;
		}
		ret[index++] = rowList;
	}

	return ret;
}

//////////////////////////////////////////////////
// SQL Methods
//////////////////////////////////////////////////

function Query_Select(value)
{
	this.query += &quot;SELECT &quot; + value + &quot; &quot;;
	return this;
}

function Query_From(value)
{
	this.query += &quot;FROM &quot; + value + &quot; &quot;;
	return this;
}

function Query_Where(value)
{
	this.query += &quot;WHERE &quot; + value + &quot; &quot;;
	return this;
}

function Query_And(value)
{
	this.query += &quot;AND &quot; + value + &quot; &quot;;
	return this;
}

function Query_Or(value)
{
	this.query += &quot;OR &quot; + value + &quot; &quot;;
	return this;
}

function Query_AlterTable(value)
{
	this.query += &quot;ALTER TABLE &quot; + value + &quot; &quot;;
	return this;
}

function Query_As(value)
{
	this.query += &quot;AS &quot; + value + &quot; &quot;;
	return this;
}

function Query_Between(value1, value2)
{
	this.query += &quot;BETWEEN &quot; + value1 + &quot; AND &quot; + value2 + &quot; &quot;;
	return this;
}

function Query_CreateDatabase(value)
{
	this.query += &quot;CREATE DATABASE &quot; + value + &quot; &quot;;
	return this;
}

// CREATE TABLE table_name( col_name1 data_type, col_name2 data_type, ...)
function Query_CreateTable()
{
	var q = arguments[0] + &quot;(&quot;;
	for(var i = 1; i &lt; arguments.length; i += 2)
	{
		q += arguments[i] + &quot; &quot; + arguments[i + 1] + &quot;,&quot;;
	}
	q += &quot;)&quot;;
	this.query += &quot;CREATE TABLE &quot; + q + &quot; &quot;;
	return this;
}

function Query_CreateIndex(index_name)
{
	this.query += &quot;CREATE INDEX &quot; + index_name + &quot; &quot;;
	return this;
}

function Query_On(table, col)
{
	this.query += &quot;ON &quot; + table + &quot;(&quot; + col + &quot;) &quot;;
	return this;
}

function Query_CreateUniqueIndex(index_name)
{
	this.query += &quot;CREATE UNIQUE INDEX &quot; + index_name + &quot; &quot;;
	return this;
}

function Query_CreateView(view_name)
{
	this.query += &quot;CREATE VIEW &quot; + view_name + &quot; AS &quot;;
	return this;
}

function Query_DeleteFrom(table_name)
{
	this.query += &quot;DELETE FROM &quot; + table_name + &quot; &quot;;
	return this;
}

function Query_Delete(select, table_name)
{
	this.query += &quot;DELETE &quot; + select + &quot; FROM &quot; + table_name + &quot; &quot;;
	return this;
}

function Query_Drop(database_name)
{
	this.query += &quot;DROP DATABASE &quot; + database_name + &quot; &quot;;
	return this;
}

function Query_DropColumn(col)
{
	this.query += &quot;DROP COLUMN &quot; + col + &quot; &quot;;
	return this;
}

function Query_DropIndex(table_name, index_name)
{
	this.query += &quot;DROP INDEX &quot; + table_name + &quot;.&quot; + index_name + &quot; &quot;;
	return this;
}

function Query_DropTable(table_name)
{
	this.query += &quot;DROP TABLE &quot; + table_name + &quot; &quot;;
	return this;
}

function Query_GroupBy(col_name)
{
	this.query += &quot;GROUP BY &quot; + col_name + &quot; &quot;;
	return this;
}

function Query_Having(func, col_name, op, value)
{
	this.query += &quot;HAVING &quot; + func + &quot;(&quot; + col_name + &quot;) &quot; + op + &quot; &quot; + value;
	return this;
}

// value1, value2, value3, ...
function Query_In()
{
	var value = &quot;&quot;;
	for(var i = 0; i &lt; arguments.length; i++)
	{
		value += arguments[i] + (i != arguments.length - 1 ? &quot;,&quot; : &quot;&quot;);
	}
	this.query += &quot;IN (&quot; + value + &quot;) &quot;;
	return this;
}

// arguments = table_name, col1, val1, col2, val2, ...
function Query_InsertInto()
{
	var col = &quot;&quot;;
	var val = &quot;&quot;;
	for(var i = 1; i &lt; arguments.length; i++)
	{
		col += arguments[i] + (i != arguments.length - 2 ? &quot;,&quot; : &quot;&quot;);
		val += arguments[i + 1] + (i != arguments.length - 1 ? &quot;,&quot; : &quot;&quot;);
	}
	this.query += &quot;INSERT INTO &quot; + arguments[0] + &quot; (&quot; + col + &quot;) VALUES(&quot; + val + &quot;) &quot;;
	return this;
}

function Query_InnerJoin(table1, table2, col1, col2)
{
	this.select(col1).from(table1);
	this.query += &quot;INNER JOIN &quot; + table2 + &quot; ON &quot; + table1 + &quot;.&quot; + col1 + &quot;=&quot; + table2 + &quot;.&quot; + col2 + &quot; &quot;;
	return this;
}

function Query_LeftJoin(table1, table2, col1, col2)
{
	this.select(col1).from(table1);
	this.query += &quot;LEFT JOIN &quot; + table2 + &quot; ON &quot; + table1 + &quot;.&quot; + col1 + &quot;=&quot; + table2 + &quot;.&quot; + col2 + &quot; &quot;;
	return this;
}

function Query_RightJoin(table1, table2, col1, col2)
{
	this.select(col1).from(table1);
	this.query += &quot;RIGHT JOIN &quot; + table2 + &quot; ON &quot; + table1 + &quot;.&quot; + col1 + &quot;=&quot; + table2 + &quot;.&quot; + col2 + &quot; &quot;;
	return this;
}

function Query_FullJoin(table1, table2, col1, col2)
{
	this.select(col1).from(table1);
	this.query += &quot;FULL JOIN &quot; + table2 + &quot; ON &quot; + table1 + &quot;.&quot; + col1 + &quot;=&quot; + table2 + &quot;.&quot; + col2 + &quot; &quot;;
	return this;
}

function Query_Like(pattern)
{
	this.query += &quot;LIKE &quot; + pattern + &quot; &quot;;
	return this;
}

// dir = ASC || DESC
function Query_OrderBy(col, dir)
{
	this.query += &quot;ORDER BY &quot; + col + &quot; &quot; + dir + &quot; &quot;;
	return this;
}

function Query_SelectDistinct(col, table)
{
	this.query += &quot;SELECT DISTINCT &quot; + col + &quot; FROM &quot; + table;
	return this;
}

function Query_SelectInto(col, newTable)
{
	this.select(col);
	this.query += &quot;INTO &quot; + newTable + &quot; &quot;;
	return this;
}

function Query_SelectTop(value)
{
	this.query += &quot;SELECT TOP &quot; + value + &quot; &quot;;
	return this;
}

function Query_TruncateTable(table)
{
	this.query += &quot;TRUNCATE TABLE &quot; + table + &quot; &quot;;
	return this;
}

function Query_Union(col, table)
{
	this.query += &quot;UNION &quot;;
	this.select(col).from(table);
	return this;
}

function Query_UnionAll(col, table)
{
	this.query += &quot;UNION ALL &quot;;
	this.select(col).from(table);
	return this;
}

function Query_Update(table)
{
	this.query += &quot;UPDATE &quot; + table + &quot; &quot;;
	return this;
}

// arguments = col=val, col2=val2, ...
function Query_Set()
{
	var value = &quot;&quot;;
	for(var i = 0; i &lt; arguments.length; i += 2)
	{
		value += arguments[i] + &quot;=&quot; + arguments[i + 1] + (i != arguments.length - 2 ? &quot;,&quot; : &quot;&quot;);
	}
	this.query += &quot;SET &quot; + value + &quot; &quot;;
	return this;
}

// enables insertion of anything extra
function Query_Y(value)
{
	this.query += value + &quot; &quot;;
	return this;
}

</pre>
</pre>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mindcemetery.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mindcemetery.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mindcemetery.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mindcemetery.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mindcemetery.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mindcemetery.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mindcemetery.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mindcemetery.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mindcemetery.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mindcemetery.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mindcemetery.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mindcemetery.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mindcemetery.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mindcemetery.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=16&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mindcemetery.wordpress.com/2009/11/02/javascript-linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/708f2f970348fb053707b2e7245413a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slyprid</media:title>
		</media:content>
	</item>
		<item>
		<title>TestComplete Reference Sheet</title>
		<link>http://mindcemetery.wordpress.com/2009/10/20/testcomplete-reference-sheet/</link>
		<comments>http://mindcemetery.wordpress.com/2009/10/20/testcomplete-reference-sheet/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 14:01:37 +0000</pubDate>
		<dc:creator>slyprid</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[TestComplete]]></category>

		<guid isPermaLink="false">http://mindcemetery.wordpress.com/?p=12</guid>
		<description><![CDATA[Working on a reference sheet for various commands in TestComplete. It can be downloaded from my SkyDrive at TestComplete 7 Reference.xlsx<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=12&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Working on a reference sheet for various commands in TestComplete.</p>
<p>It can be downloaded from my SkyDrive at</p>
<p><a title="TestComplete 7 Reference.xlsx" href="http://cid-f17436f8db3a94fa.skydrive.live.com/self.aspx/.Public/TestComplete%207%20Reference.xlsx">TestComplete 7 Reference.xlsx</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mindcemetery.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mindcemetery.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mindcemetery.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mindcemetery.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mindcemetery.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mindcemetery.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mindcemetery.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mindcemetery.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mindcemetery.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mindcemetery.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mindcemetery.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mindcemetery.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mindcemetery.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mindcemetery.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=12&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mindcemetery.wordpress.com/2009/10/20/testcomplete-reference-sheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/708f2f970348fb053707b2e7245413a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slyprid</media:title>
		</media:content>
	</item>
		<item>
		<title>Programming eBooks</title>
		<link>http://mindcemetery.wordpress.com/2009/10/19/programming-ebooks/</link>
		<comments>http://mindcemetery.wordpress.com/2009/10/19/programming-ebooks/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 20:06:08 +0000</pubDate>
		<dc:creator>slyprid</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eBooks]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[StackOverflow]]></category>

		<guid isPermaLink="false">http://mindcemetery.wordpress.com/?p=8</guid>
		<description><![CDATA[Just found this post on StackOverflow http://stackoverflow.com/questions/391523/what-are-some-good-free-programming-books<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=8&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just found this post on StackOverflow</p>
<p><a href="http://stackoverflow.com/questions/391523/what-are-some-good-free-programming-books">http://stackoverflow.com/questions/391523/what-are-some-good-free-programming-books</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mindcemetery.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mindcemetery.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mindcemetery.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mindcemetery.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mindcemetery.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mindcemetery.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mindcemetery.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mindcemetery.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mindcemetery.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mindcemetery.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mindcemetery.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mindcemetery.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mindcemetery.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mindcemetery.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=8&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mindcemetery.wordpress.com/2009/10/19/programming-ebooks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/708f2f970348fb053707b2e7245413a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slyprid</media:title>
		</media:content>
	</item>
		<item>
		<title>JSON in TestComplete</title>
		<link>http://mindcemetery.wordpress.com/2009/10/19/json-in-testcomplete/</link>
		<comments>http://mindcemetery.wordpress.com/2009/10/19/json-in-testcomplete/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 13:34:21 +0000</pubDate>
		<dc:creator>slyprid</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#Script]]></category>
		<category><![CDATA[JScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[TestComplete]]></category>

		<guid isPermaLink="false">http://mindcemetery.wordpress.com/?p=5</guid>
		<description><![CDATA[I&#8217;ve figured out how to implement JSON into TestComplete.  Most of it is already there if you use JScript / C#Script / C++Script in TestComplete.  The only manipulating needed is when you read the JSON in from a file, but it can be easily wrapped up into a function. Lets see how some code turns [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=5&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve figured out how to implement JSON into TestComplete.  Most of it is already there if you use JScript / C#Script / C++Script in TestComplete.  The only manipulating needed is when you read the JSON in from a file, but it can be easily wrapped up into a function.</p>
<p>Lets see how some code turns out on here.</p>
<pre style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:10pt;display:block;white-space:pre;">function Main()
{
     var objJSON = { "FirstName" : "John", "LastName" : "Doe", "Age" : 24 };

     Log.Message(objJSON.FirstName); // Logs "John"
     Log.Message(objJSON.LastName); // Logs "Doe"
     Log.Message(objJSON.Age); // Logs "24"

     var data = aqFile.ReadWholeTextFile("c:\\test.json", aqFile.ctANSI);
     var objJSON2;
     eval("objJSON2 = {" + data + "};");

     Log.Message(objJSON2.Animal.Dog); // Logs "Friendly"

     var objJSON3 = GetJsonFromFile("c:\\test.json");
     Log.Message(objJSON3.Color); // Logs "Blue"
}

function GetJsonFromFile(strFilename)
{
	var data = aqFile.ReadWholeTextFile(strFilename, aqFile.ctANSI);
	var ret;
	eval("ret = {" + data + "};");
	return ret;
}</pre>
<hr />
<p>[test.json]<br />
&#8216;Color&#8217; : &#8216;Blue&#8217;,<br />
&#8216;Animal&#8217; : {&#8216;Dog&#8217; : &#8216;Friendly&#8217; }<br />
[/test.json]</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mindcemetery.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mindcemetery.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mindcemetery.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mindcemetery.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mindcemetery.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mindcemetery.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mindcemetery.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mindcemetery.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mindcemetery.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mindcemetery.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mindcemetery.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mindcemetery.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mindcemetery.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mindcemetery.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=5&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mindcemetery.wordpress.com/2009/10/19/json-in-testcomplete/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/708f2f970348fb053707b2e7245413a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slyprid</media:title>
		</media:content>
	</item>
		<item>
		<title>First Thoughts</title>
		<link>http://mindcemetery.wordpress.com/2009/10/16/3/</link>
		<comments>http://mindcemetery.wordpress.com/2009/10/16/3/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 20:35:41 +0000</pubDate>
		<dc:creator>slyprid</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Aether]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[DesktopDockLib]]></category>
		<category><![CDATA[Elysium]]></category>
		<category><![CDATA[Elysium Evolve]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Transmute]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://mindcemetery.wordpress.com/?p=3</guid>
		<description><![CDATA[Working on some new projects to hopefully get out to everyone.  Finally figured out how to dock a window to the desktop in WPF now and I am wrapping that up into a library. Current Projects hacker (Hacking RPG/Puzzle game) Elysium (Engine / Library) Elysium Evolve (Episodic RPG for Windows/Xbox) Aether (Performance monitoring system) DesktopDockLib [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=3&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Working on some new projects to hopefully get out to everyone.  Finally figured out how to dock a window to the desktop in WPF now and I am wrapping that up into a library.</p>
<p>Current Projects</p>
<ul>
<li>hacker (Hacking RPG/Puzzle game)</li>
<li>Elysium (Engine / Library)</li>
<li>Elysium Evolve (Episodic RPG for Windows/Xbox)</li>
<li>Aether (Performance monitoring system)</li>
<li>DesktopDockLib</li>
<li>Transmute (Full featured editor / debugger for Elysium)</li>
<li>DatabaseManager (Program for work)</li>
<li>JSON importing in XNA</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mindcemetery.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mindcemetery.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mindcemetery.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mindcemetery.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mindcemetery.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mindcemetery.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mindcemetery.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mindcemetery.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mindcemetery.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mindcemetery.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mindcemetery.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mindcemetery.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mindcemetery.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mindcemetery.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mindcemetery.wordpress.com&amp;blog=5742499&amp;post=3&amp;subd=mindcemetery&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mindcemetery.wordpress.com/2009/10/16/3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/708f2f970348fb053707b2e7245413a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">slyprid</media:title>
		</media:content>
	</item>
	</channel>
</rss>
