String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

String.prototype.isNumeric = function() {
	var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
	var result = this.match(RegExp);
	return result;
}

String.prototype.isAlpha = function() {
	var RegExp = /^[a-zA-Z]?(-)?(\.?)$/;
	var result = this.match(RegExp);
	return result;
}

String.prototype.isAlphaNumeric = function() {
	var RegExp = /\w/;
	var result = this.match(RegExp);
	return result;
}

function eFunc() {
	//empty func
}

function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	}
	else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+ evType, fn);
		return r;
	}
	else {
		return false;
	}
}

function removeEvent(obj, evType, fn, useCapture) {
	if (obj.removeEventListener) {
		obj.removeEventListener(evType, fn, useCapture);
		return true;
	}
	else if (obj.detachEvent) {
		var r = obj.detachEvent("on"+ evType, fn);
		return r;
	}
	else {
		alert("Handler could not be removed");
	}
}

function GetXmlHttpObject(handler) {
	var objXmlHttp = null;

	if (navigator.userAgent.indexOf("Opera") >= 0) {
		objXmlHttp = new XMLHttpRequest();
		objXmlHttp.onload = handler;
		objXmlHttp.onerror = handler;

		return objXmlHttp;
	}
	if (navigator.userAgent.indexOf("MSIE")>=0) {
		var strName = "Msxml2.XMLHTTP";
		if (navigator.appVersion.indexOf("MSIE 5.5") >= 0)
		{
			strName = "Microsoft.XMLHTTP";
		}

		try {
			objXmlHttp = new ActiveXObject(strName);
			objXmlHttp.onreadystatechange = handler;
			return objXmlHttp;
		}
		catch(e) {
			alert("Error. Scripting for ActiveX might be disabled")
			return;
		}
	}

	if (navigator.userAgent.indexOf("Mozilla")>=0)
	{
		objXmlHttp = new XMLHttpRequest();
		objXmlHttp.onload = handler;
		objXmlHttp.onerror = handler;

		return objXmlHttp;
	}
}

function chkChar(oElement,filter,e) {
	if(oElement.onkeypress){
		if(document.all){
			var sKey=String.fromCharCode(event.keyCode);
			var re=new RegExp(filter);
				if(sKey!="\r" && sKey!="\b" && !re.test(sKey))
					event.returnValue=false;
				event.keyCode=sKey.charCodeAt(0);
		}else{
			document.captureEvents(Event.ONKEYPRESS);
				var sKey=String.fromCharCode(e.which);
				var re=new RegExp(filter);
				if(sKey!="\r" && sKey!="\b" && !re.test(sKey))return false;
		}
	}
}

function selVal(obj) {
	document.getElementById('webFolder').value = obj.title;
	document.getElementById('isValidName').src='/_images/design/signup-ok.png';

	closeTips();
}

function setData(obj, xml) {
	if (xml.readyState == 4 || xml.readyState == "complete") {
		if (xml.responseText.length > 0) {
			var rsOptNames = eval(xml.responseText);
			buildOPT(obj, rsOptNames);
		}
	}
}

function getSiteNames(obj, sFirst, sLast) {
	if (window.addEventListener) {
		var xml = GetXmlHttpObject(function() {
			xml.onreadystatechange = setData(obj, xml);
		});
	}
	else {
		var xml = GetXmlHttpObject(function() {
			xml.onreadystatechange = function () {
				setData(obj, xml);
			}
		});
	}

	var sVars = "sFirst="+ escape(sFirst);
	sVars = sVars +"&sLast="+ escape(sLast);
	sVars = sVars +"&sSiteName="+ escape(obj.value);

	xml.open ("POST", "/_includes/ajax/_getNames.asp" , true);
	xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
	xml.send (sVars);
}

function chkMe(e, obj, all, frm) {
	if (!e) var e = window.event;
	
	if (all == null) {
		if (e) {
			var code;
			if (e.keyCode) code = e.keyCode;
			else if (e.which) code = e.which;
			
			var skipMe = false;
			
			if (obj.name == 'strWebFolder') {
				if (document.getElementById('webFirst') && document.getElementById('webFirst').value.length > 0) {
					skipMe = true;
				}
				
				if (document.getElementById('webLast') && document.getElementById('webLast').value.length > 0) {
					skipMe = true;
				}
			}

			if (code && !skipMe) {
				if (code == 9 || code == 13 || code == 27 || code == 37 || code == 38 || code == 39 || code == 40) {
					return;
				}
			}
		}
	}
	
	var isError = null;
	
	if (obj.value.length == 0) {
		if (obj.name == 'strWebFolder') {
			isError = setSiteName(obj, document.getElementById('webFirst').value, document.getElementById('webLast').value, frm);
		}
		else {
			obj.style.backgroundColor = '#ffff99';

			if (document.getElementById(obj.name +'Valid')) {
				document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
			}
			
			if (document.getElementById(obj.name +'ErrMSG')) {
				document.getElementById(obj.name +'ErrMSG').innerHTML = '';
			}
			
			isError = 1;
		}
	}
	else {
		if (obj.name == 'strUsername') {
			isError = chkUserName(obj, frm);
		}
		else if (obj.name == 'strWebFolder') {
			isError = chkSiteName(obj, frm);
		}
		else if (obj.name == 'strCaptcha') {
			isError = chkCaptcha(obj, frm);
		}
		else {
			obj.style.backgroundColor = '#fff';

			if (document.getElementById(obj.name +'Valid')) {
				document.getElementById(obj.name +'Valid').src = '/_images/design/signup-ok.png';
			}
			
			if (document.getElementById(obj.name +'ErrMSG')) {
				document.getElementById(obj.name +'ErrMSG').innerHTML = '';
			}
		}
	}
	
	return isError;
}

function chkUser(obj, xml, frm) {
	if (xml.readyState == 4 || xml.readyState == "complete") {
		var isError = null;
		
		if (parseInt(xml.responseText) == 2) {
			obj.style.backgroundColor = '#ffff99';
			
			document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
			document.getElementById(obj.name +'ErrMSG').innerHTML = 'Invalid Email';
			
			isError = parseInt(xml.responseText);
		}
		else if (parseInt(xml.responseText) == 3) {
			obj.style.backgroundColor = '#ffff99';
			
			document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
			document.getElementById(obj.name +'ErrMSG').innerHTML = 'Already Taken';
			
			isError = parseInt(xml.responseText);
		}
		else {
			obj.style.backgroundColor = '#fff';
			
			document.getElementById(obj.name +'Valid').src = '/_images/design/signup-ok.png';
			document.getElementById(obj.name +'ErrMSG').innerHTML = '';
		}
		
		if (frm == 1) {
			return isError;
		}
	}
}

function chkUserName(obj, frm) {
	var isError = null;
	
	if (obj.value.length > 0) {
		var isAsync = true;
		
		if (frm == null) {
			if (window.addEventListener) {
				var xml = GetXmlHttpObject(function() {
					xml.onreadystatechange = chkUser(obj, xml);
				});
			}
			else {
				var xml = GetXmlHttpObject(function() {
					xml.onreadystatechange = function() {
						chkUser(obj, xml);
					}
				});
			}
		}
		else {
			var xml = GetXmlHttpObject(eFunc);
			isAsync = false;
		}

		var sVars = "sUserName="+ escape(obj.value);

		xml.open ("POST", "/_includes/ajax/_chkUserName.asp" , isAsync);
		xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
		xml.send (sVars);
		
		if (!isAsync) {
			isError = chkUser(obj, xml, frm);
		}
	}
	else {
		obj.style.backgroundColor = '#ffff99';
		document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
	}
	
	return isError;
}

function setVal(obj, xml) {
	if (xml.readyState == 4 || xml.readyState == "complete") {
		if (xml.responseText.length > 0) {
			obj.style.backgroundColor = '#fff';
			obj.value = xml.responseText.toLowerCase();
			
			document.getElementById(obj.name +'Valid').src = '/_images/design/signup-ok.png';
			document.getElementById(obj.name +'ErrMSG').innerHTML = '';
		}
	}
}

function setSiteName(obj, sFirst, sLast, frm) {
	if (sFirst.length > 0 || sLast.length > 0) {
		if (window.addEventListener) {
			var xml = GetXmlHttpObject(function() {
				xml.onreadystatechange = setVal(obj, xml);
			});
		}
		else {
			var xml = GetXmlHttpObject(function() {
				xml.onreadystatechange = function() {
					setVal(obj, xml);
				}
			});
		}

		var sVars = "sSiteName="+ obj.value;
		if (sFirst.length > 0) {
			sVars = sVars +"&sFirst="+ escape(sFirst);
		}
		
		if (sLast.length > 0) {
			sVars = sVars +"&sLast="+ escape(sLast);
		}

		xml.open ("POST", "/_includes/ajax/_setName.asp" , false);
		xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
		xml.send (sVars);
	}
	
	chkSiteName(obj, frm);
}

function chkSite(obj, xml, frm) {
	if (xml.readyState == 4 || xml.readyState == "complete") {
		var isError = null;
		
		if (parseInt(xml.responseText) == 2) {
			obj.style.backgroundColor = '#ffff99';
			
			document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
			document.getElementById(obj.name +'ErrMSG').innerHTML = 'Invalid Name';

			//getSiteNames(obj, document.getElementById('webFirst').value, document.getElementById('webLast').value);
			isError = parseInt(xml.responseText);		
		}
		else if (parseInt(xml.responseText) == 3) {
			obj.style.backgroundColor = '#ffff99';
			
			document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
			document.getElementById(obj.name +'ErrMSG').innerHTML = 'Already Taken';
			
			isError = parseInt(xml.responseText);
		}
		else {
			obj.style.backgroundColor = '#fff';
			
			document.getElementById(obj.name +'Valid').src = '/_images/design/signup-ok.png';
			document.getElementById(obj.name +'ErrMSG').innerHTML = '';
		}
		
		if (frm == 1) {
			return isError;
		}
	}
}

function chkSiteName(obj, frm) {
	var isError = null;
	
	if (obj.value.length > 0) {
		var isAsync = true;
		
		if (frm == null) {
			if (window.addEventListener) {
				var xml = GetXmlHttpObject(function() {
					xml.onreadystatechange = chkSite(obj, xml);
				});
			}
			else {
				var xml = GetXmlHttpObject(function() {
					xml.onreadystatechange = function() {
						chkSite(obj, xml);
					}
				});
			}
		}
		else {
			var xml = GetXmlHttpObject(eFunc);
			isAsync = false;
		}

		var sVars = "sSiteName="+ escape(obj.value);

		xml.open ("POST", "/_includes/ajax/_chkName.asp" , isAsync);
		xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
		xml.send (sVars);
		
		if (!isAsync) {
			isError = chkSite(obj, xml, frm);
		}
	}
	else {
		obj.style.backgroundColor = '#ffff99';
		
		document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
		document.getElementById(obj.name +'ErrMSG').innerHTML = '';
	}
	
	return isError;
}



function chkCaptcha(obj) {
	var isError = null;
	var xml = GetXmlHttpObject(eFunc);

	var sVars = "sCaptcha="+ obj.value;
	sVars = sVars +"&sCaptchaStr="+ obj.alt;
		
	xml.open ("POST", "/_includes/ajax/_chkCaptcha.asp" , false);
	xml.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
	xml.send (sVars);

	if (xml.responseText == 2) {
		obj.style.backgroundColor = '#ffff99';
		document.getElementById(obj.name +'Valid').src = '/_images/design/signup-error.png';
		
		if (document.getElementById(obj.name +'ErrMSG')) {
			document.getElementById(obj.name +'ErrMSG').innerHTML = '';
		}
		
		isError = parseInt(xml.responseText);
	}
	else {
		obj.style.backgroundColor = '#fff';
		document.getElementById(obj.name +'Valid').src = '/_images/design/signup-ok.png';
		
		if (document.getElementById(obj.name +'ErrMSG')) {
			document.getElementById(obj.name +'ErrMSG').innerHTML = '';
		}
	}

	return isError;
}

function buildOPT(obj, rsOptNames) {
	var myOpt = "";
	var myHtml = "";

	myHtml = myHtml	+"<div>";
	myHtml = myHtml	+"The name you have selected is already in use by another user!! Please select an alternative name from the suggested list below, or enter a different one in the field provided:"

	for (i=0;i<5;i++) {
		if (rsOptNames.length-1 >= i) {
			if (parseInt(rsOptNames[i][1]) == 0) {
				if (myOpt.length == 0) {
					myOpt = rsOptNames[i][0];
				}

				myHtml = myHtml	+"<br/><a href='javascript:void(0)' onclick='selVal(this)' title='"+ rsOptNames[i][0] +"'>"+ rsOptNames[i][0] +"</a>";
			}
		}
	}

	myHtml = myHtml	+"</div>";

	if (obj.value.length == 0) {
		obj.value = myOpt;
	}
}

function vFRM(f) {
	var objINP = f.getElementsByTagName('input');
	for (i=0;i<objINP.length;i++) {
		if (objINP[i].title) {
			var objName = objINP[i].name;
			var isError = chkMe(null, objINP[i], 1, 1);
					
			if (isError != null) {
				if (isError == 1) {
					alert('Please complete the \''+ objINP[i].title +'\' field');
					objINP[i].focus();
				}
				else {
					if (objName == 'strUsername') {
						if (isError == 2) {
							alert('Invalid Email Address, please try again');
						}
						else if (isError == 3) {
							alert('An account has already been created for \''+ objINP[i].value.replace("'","\'") +'\'');
						}
					}
					else if (objName == 'strWebFolder') {
						if (isError == 2) {
							alert('Invalid Website Name, please try again');
						}
						else if (isError == 3) {
							alert('The Website Name you entered has already been taken by another user, please try again');
						}
					}
					else if (objName == 'strCaptcha') {
						if (isError == 2) {
							alert('Incorect sum calculation, please try again');
						}
					}
					
					objINP[i].select();
				}
				
				return false;
			}
		}
	}
	
	return true;
}