
	function $id(id) {
		return document.getElementById(id);
	}

	function CheckEmail(val) {
		var re = /^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/ig;
		return re.test(val);
	}
	/*
	function CheckDomain(val) {
		//var re = /^(https?://)?(([\w!~*'().&=+$%-]+: )?[\w!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([\w!~*'()-]+\.)*([\w^-][\w-]{0,61})?[\w]\.[a-z]{2,6})(:[0-9]{1,4})?((/*)|(/+[\w!~*'().;?:@&=+$,%#-]+)+/*)$/ig;
		var re = /^(?:[\w-]+\.)+[a-zA-Z]{2,7}$/ig;
		if (re.test(val)) {
			alert('domain check passed.');
		} else {
			alert('domain check failed.');
		}
		return false;
	}
	*/

	function trimValue(val) {
		return val.replace(/^\s+|\s+$/g,"");
	}
	
	DomainCheck = {
		lastDomain : ''
		, lastStatus : false
		, lastError : ''
		, check : function(val) {
				this.lastDomain = this.getRootDomain(val);
				if (this.lastDomain == '') {
					this.lastError = 'No domain was entered.';
					return this.lastStatus = false;
				}
				if (!this.validateFormat()) {
					this.lastError = 'Incorrect domain format entered.';
					return this.lastStatus = false;
				}
				/*
				if (!this.validateConnect()) {
					this.lastError = 'Could not connect to the website.';
					return this.lastStatus = false;
				}
				*/
				return this.lastStatus = true;
			}
		, validateFormat : function() {
				var re = /^(?:[\w-]+\.)+[a-zA-Z]{2,7}$/ig;
				return re.test(this.lastDomain);
			}
		, validateConnect : function() {
				// compose a request for the homepage
				var http = getXmlHttp();
				if (null != http) {
					var urls = [ "http://" + this.lastDomain, "http://www." + this.lastDomain, "https://" + this.lastDomain, "https://www." + this.lastDomain ];
					for (var i = 0; i < urls.length; i++) {
						var url = urls[i];
						try {
							http.open("GET", "/validateConnect/?url=" + escape(url), false);
							http.send(null);
							if (http.status == 200) {
								return true;
							}
						}
						catch (e) {
							continue;
						}
					}
				} else {
					alert('Could not create XmlHttp object.');
				}
				return false;
			}
		, getRootDomain : function(val) {
				var d = val.split('.');
				while (d.length > 2) { d.shift(); }
				return d.join('.');
			}
	};
	
	function getXmlHttp() {
		var xmlhttp = null;
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				try {
					xmlhttp = new XMLHttpRequest();
				}
				catch (e) {
					xmlhttp = null;
				}
			}
		}
		return xmlhttp;
	}
	
// Check Domain Name:
// ^(https?://)?(([\w!~*'().&=+$%-]+: )?[\w!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([\w!~*'()-]+\.)*([\w^-][\w-]{0,61})?[\w]\.[a-z]{2,6})(:[0-9]{1,4})?((/*)|(/+[\w!~*'().;?:@&=+$,%#-]+)+/*)$