function isEmpty(sValue){
		re = /\s*/gi;
		if (sValue.length>0)
		{
			ss=sValue.replace(re,'');
//			window.alert(ss+'; '+ss.length);
			if (ss.length==0)
			{
//				window.alert('!');
				return true;
			};
		}
		else
		{
			return true;
		};
		return false;
	};
	// validating phone number string
	function ValidPhoneNumber(sNumber){
	// more restrictive check (for later use)
	//		// checking for last char
			re=/.*[^\-]$/gi;
			if (sNumber.replace(re,'')) {return false};
			// removing all hyphens and spaces
			re=/\s*\-*/gi;
			ss=sNumber.replace(re,'');
			// checking for correct digits ordering
			re=/(\(\d+\))*\d+/				// allow zero or more code in parentheses and then one or more digits
			ss1=ss.replace(re,'');
			if (ss1.length){return false}
			else{
				re=/\(\)/gi				
				ss1=ss.replace(re,'');
				if (ss1.length>30||ss1.length<4){return false};
				return true
			}
	// more relax check (now)
	//	if (sNumber.length==0){return false};
	//	re=/[\(\)\-\s01234567890]/gi; // simple check pattern
//	//	re=/[\(\d{1,}\)]+[\d\s\-]+/ //more efficient pattern, but not well tested
	//	ss=sNumber.replace(re,'');
	//	if (ss.length==0)
	//		{return true}
	//	else
	//		{return false};
	};
	// validating email
	function ValidEmail(sEmail){
		if (sEmail.length==0){return false};
		// ((\w+)(\.\w+)*) - local-part
		// [\x21\x23-\x27\x2a-\x2b\x2d\x2f-\x39\x3d\x3f\x41-\x5a\x5e-\x7e]+ - atom
		re=/([\x21\x23-\x27\x2a-\x2b\x2d\x2f-\x39\x3d\x3f\x41-\x5a\x5e-\x7e]+(\.[\x21\x23-\x27\x2a-\x2b\x2d\x2f-\x39\x3d\x3f\x41-\x5a\x5e-\x7e]+)*)@([\x21\x23-\x27\x2a-\x2b\x2d\x2f-\x39\x3d\x3f\x41-\x5a\x5e-\x7e]+(\.[\x21\x23-\x27\x2a-\x2b\x2d\x2f-\x39\x3d\x3f\x41-\x5a\x5e-\x7e]+)*)/;
		//	re=/(\w+(\.\w+)*)@(\w+(\.\w+)*)/
		ss=sEmail.replace(re,'');
		//window.alert(ss);
		if (ss.length==0)
			{return true}
		else
			{return false};
	};
	// validating last name
	function ValidLastName(sLastName){
		if (sLastName){
			if (sLastName.length<2){return false};
			// checking for digits existence
			re=/[A-Za-z\s]/gi;
			ss=sLastName.replace(re,'');
			// if there no digits and special symbols in the string then return true else return false
			if (ss.length==0){
				re=/\s/gi;
				ss=sLastName.replace(re,'');
				if (ss.length<2){return false};
				return true
			}else{
				return false
			};
			return true;
		};
	};
	// validating first name
	function ValidFirstName(sFirstName){
		if (sFirstName){
			if (sFirstName.length<1){return false};
			// checking for digits existence
			re=/[A-Za-z\s]/gi;
			ss=sFirstName.replace(re,'');
			// if there no digits in the string then return true else return false
			if (ss.length==0){
				re=/\s/gi;
				ss=sFirstName.replace(re,'');
				if (ss.length<1){return false};
				return true
			}else{
				return false
			};
			return true;
		};
	};
	//validating credit card number
	// return false if the card number is uncorrect elsewhere return string of digits 
	function ValidCCNumber(sCCNumber){
		if (sCCNumber.length==0){return false};
		re=/\s*/gi;
		ss=sCCNumber.replace(re,'');
		//window.alert(ss);
		re=/\d{16,17}/gi;
		sss=ss.replace(re,'');
		if (sss.length==0)
			{return ss}
		else
			{return false};
	};
	// addresses validating function
	// validating first address line
	function ValidAddress1(sAddress){
		if (sAddress){
			if (sAddress.length<5){return false};
			re=/[A-Za-z0-9\s]/gi;
			ss=sAddress.replace(re,'');
			// if there no illegal characters in the string then return true else return false
			if (ss.length==0){
				re=/\s/gi;
				ss=sAddress.replace(re,'');
				if (ss.length<5){return false};
				return true
			}else{
				return false
			};
			return true;
		};
	};
	// validating second address line
	function ValidAddress2(sAddress1){
		if (sAddress1){
			if (sAddress1.length<1){return false};
			re=/[A-Za-z0-9\s]/gi;
			ss=sAddress1.replace(re,'');
			// if there no illegal characters in the string then return true else return false
			if (ss.length==0){
				re=/\s/gi;
				ss=sAddress1.replace(re,'');
				return true
			}else{
				return false
			};
			return true;
		};
	};
	// end addresses validating
	// town/city name validating
	function ValidCity(sCity){
		if (sCity){
			if (sCity.length<2){return false};
			re=/[A-Za-z\s]/gi;
			ss=sCity.replace(re,'');
			// if there no illegal characters in the string then return true else return false
			if (ss.length==0){
				re=/\s/gi;
				ss=sCity.replace(re,'');
				//if (ss.length<2){return false};
				return true
			}else{
				return false
			};
			return true;
		};
	};
	// town/city name validating
	function ValidState(sState){
		if (sState){
			if (sState.length<2){return false};
			re=/[A-Za-z\s]/gi;
			ss=sState.replace(re,'');
			// if there no illegal characters in the string then return true else return false
			if (ss.length==0){
				re=/\s/gi;
				ss=sState.replace(re,'');
				//if (ss.length<2){return false};
				return true
			}else{
				return false
			};
			return true;
		};
	};
	// postal code validating
	function ValidPostcode(sPostcode){
		if (sPostcode){
			if (sPostcode.length<2){return false};
			re=/[A-Za-z0-9\s]/gi;
			ss=sPostcode.replace(re,'');
			// if there no illegal characters in the string then checking length of string
			if (ss.length==0){
				re=/\s/gi;
				ss=sPostcode.replace(re,'');
				if (ss.length<2||ss.length>10){return false};
				return true}
			else
				{return false};
			return true;
		};
	};
	// donation amount
	function ValidPrice(sAmount){
		if (sAmount){
			if (sAmount.length<1){return false};
			// at first clearing string from spaces and currency signs
			re=/[\s\$\u00A3]/gi
			ss=sAmount.replace(re,'');
			re=/(\d+,{1}\d+)|(\d{1,})/;
			ss=ss.replace(re,'');
			// if there no illegal characters in the string then checking length of string
			if (ss.length==0){
				return true}
			else
				{return false};
			return true;
		};
	};

	// activating item in select element by it first letter
    	function selectkey(s,ch)
		{
			for (i=0;i<s.length;i++)
			{
				if (s[i].value.charAt(0)==String.fromCharCode(ch))
				{
					s[i].selected=true;
					return true;
				};
			};
			return false;
		};
	