var ToolsFactory = (function(){

	//Private Instance Methods

	//Shared Instance Methods
	return ({
		GetParam:function(sParamName){  //Gets Variable Values from URL by Name
			var sLocalRegex = "[\\?&]"+sParamName+"=([^&#]*)";
			var oLocalRegex = new RegExp( sLocalRegex );
			var sLocalURL = window.location.href;
			var aLocalResults = oLocalRegex.exec( sLocalURL );
			if( aLocalResults == null ) return "";
			else return aLocalResults[1];
		},
		MakeArray:function(sParamString, sParamDelimiter){ //Splits String into an array
			return sParamString.split(sParamDelimiter);
		},
		Popup:function(sParamURL) {
			window.open(sParamURL, '', 'scrollbars=yes,width=400,height=300');
		},
		Test:function(sParamMsg){
			alert(sParamMsg);
		},
		ValidateEmail:function(sParamEmail) {
			var oLocalReg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
			var oLocalReg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
			if (!oLocalReg1.test(sParamEmail) && oLocalReg2.test(sParamEmail)) { 
				return true;
			}
			return false;
		},
		SetFlashVar:function(sParamFlashElement, sParamFlashVariable, sParamSrc) {
			if (navigator.appName.indexOf("Microsoft") > -1) {
				sParamFlashElement.SetVariable(sParamFlashVariable, sParamSrc);
			} else {
				sParamFlashElement.SetVariable(sParamFlashVariable, sParamSrc);
			}
		}
 	});
})();