String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");}

	var rePhoneNumber=/^(?:\s*\+{1}\s*|)[\d\-\(\)\s]+$/gi;
	var reEmail = /^(?:[^\.@]+(?:\.|))+@[^\.@]+(?:\.[^\.@]+)+$/gi;
	var rePostcode=/^[A-Za-z0-9\s]+$/gi;
	
	
	function isEmpty(sValue){
		return sValue.trim().length==0
	};
	// validating phone number string
	function ValidPhoneNumber(sNumber, optional){
		if (optional&&isEmpty(sNumber)) return true;
		return sNumber.replace(rePhoneNumber,"ok")=="ok";
	};
	
	// validating email
	function ValidEmail(sEmail, optional){
		if (optional&&isEmpty(sEmail)) return true;
		if (sEmail.length==0){return false};
		return sEmail.replace(reEmail,"ok")=="ok";
	};
	
	// postal code validating
	function ValidPostcode(sPostcode, optiona){
		if (optional&&isEmpty(sPostcode)) return true;
		return sPostcode.replace(rePostcode,"ok")=="ok";
	};
	// Updating / Inserting parameter with value to Query string parameters list
	function UpdateQueryParam(QueryString, paramName, paramValue)
	{
		reUpdateQuery = new RegExp("^(.*?(?:^|&|/?)"+paramName+"=)(.*?)((?:&|$).*?)$");
		if (reUpdateQuery.test(QueryString))
		{
			QueryString = QueryString.replace(reUpdateQuery, "$1"+paramValue+"$3");
		}
		else
		{
			if (QueryString!=""&&QueryString!="?")
			{
				QueryString = QueryString+"&"+paramName+"="+paramValue;
			}
			else
			{
				QueryString = paramName+"="+paramValue;
			}
		}
		reQ = /^\?/;
		if (reQ.test(QueryString)) return QueryString; else return "?"+QueryString;
	}
