if (!bbc) var bbc = {};
bbc.guidance = {};
bbc.helpers = function () {

	function xmlHTTPRequest() {
		if (window.ActiveXObject) {
			return (xmlHTTPRequest = function() { return new ActiveXObject("MSXML2.XMLHTTP"); })();
		} else {
			return (xmlHTTPRequest = function() { return new XMLHttpRequest(); })();
		}
	}

	return {
		isStr: function (v) {

			if (typeof(v) === "string") return !!((v.length > 0) && !(/^\s*$/).test(v));
			return false;
		},

		validPassword: function (v) {

			if(this.isStr(v)) {
				var l = v.length;
				return (l > 3 && l < 13);
			}

			return false;
		},

		isEmail: function (v) {

			return (/^([a-zA-Z0-9_\.\+\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/).test(v);
		},

		hasClass: function(e,c) {

			return e.className.match(new RegExp("(\\s|^)" + c + "(\\s|$)"));
		},

		addClass: function(e,c) {

			if (!this.hasClass(e,c)) e.className += " " + c;
		},

		removeClass: function (e,c) {

			var reg = new RegExp("(\\s|^)" + c + "(\\s|$)");
			e.className = e.className.replace(reg," ");
		},

		node: function(name,attrib,child) {

			var el = document.createElement(name);
			if (attrib) {
				for (var i in attrib) {
					var j = i;
					if (j == "class") j = "className";
					if (j == "for") j = "htmlFor";
					el[j] = attrib[i];
				}
			}
			if (child) {
				for (var i = 0,j = child.length;i < j;i++) {
					var item = child[i];
					el.appendChild((typeof item == "string") ? document.createTextNode(item) : item);
				}
			}

			return el;
		},

		sendRequest: function(path,postContent,type,callbacks) {

			var xhr = xmlHTTPRequest();
			xhr.open(type,path,true);
			xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

			xhr.onreadystatechange = function(e) {

				if (xhr.readyState != 4) return;
				if (xhr.status == 200) {
					if (xhr.responseText === "OK") {
						callbacks.ok(xhr);

					} else {
						callbacks.fail(xhr);
					}

				} else {
					callbacks.error(xhr);
				}
			};

			xhr.send(postContent);
		}
	}
}();
