Added string value helper for virtual collections
diff --git a/dev/js/src/vc/stringval.js b/dev/js/src/vc/stringval.js
new file mode 100644
index 0000000..e07b6a4
--- /dev/null
+++ b/dev/js/src/vc/stringval.js
@@ -0,0 +1,91 @@
+/**
+ * Add string values to the virtual collection
+ */
+define({
+ create : function () {
+ var regex = false;
+ var value = '';
+ if (arguments.length == 2) {
+ regex = arguments[1];
+ };
+ if (arguments.length > 1) {
+ value = arguments[0];
+ };
+ return Object.create(this)._init(value, regex);
+ },
+
+ _init : function (value, regex) {
+ this.element();
+ this.value(value);
+ this.regex(regex);
+ return this;
+ },
+
+ regex : function (bool) {
+ if (arguments.length === 1) {
+ if (bool) {
+ this._regex = true;
+ }
+ else {
+ this._regex = false;
+ };
+ this._update();
+ };
+ return this._regex;
+ },
+
+ toggleRegex : function () {
+ if (this._regex === false)
+ this.regex(true);
+ else
+ this.regex(false);
+ },
+
+ value : function (val) {
+ if (arguments.length === 1) {
+ this._value = val;
+ this._update();
+ };
+ return this._value;
+ },
+
+ _update : function () {
+ this._input.firstChild.data = this._value;
+ if (this._regex) {
+ this._element.classList.add('regex');
+ }
+ else {
+ this._element.classList.add('regex');
+ };
+ },
+
+ element : function () {
+ if (this._element !== undefined)
+ return this._element;
+
+ this._element = document.createElement('div');
+ var cl = this._element.classList;
+ cl.add('vc-value');
+ if (this.regex())
+ cl.add('regex');
+
+ this._input = this._element.appendChild(
+ document.createElement('input')
+ );
+ this._input.appendChild(
+ document.createTextNode(this.value())
+ );
+
+ this._element.appendChild(
+ document.createElement('div')
+ ).addEventListener('click', function (e) {
+ this.toggleRegex();
+ }.bind(this));
+
+ var go = this._element.appendChild(
+ document.createElement('span')
+ );
+
+ return this._element;
+ }
+});