	var xmlHttpRequrrent = null;
	var responseContextText = new ResponseContext();

	var xmlHttpRequrrentLogin = null;
	var responseContextTextLogin = new ResponseContext();
	
	var xmlHttpRequrrentLogout = null;
	var responseContextTextLogout = new ResponseContext();
		
	function callbackLogin() {
		if (xmlHttpRequrrentLogin != null && xmlHttpRequrrentLogin.readyState == 4) {
			if (xmlHttpRequrrentLogin.status == 200) {
				responseContextTextLogin.parseResponse(xmlHttpRequrrentLogin.responseText);
//				alert(responseContextTextLogin.get('error'));
				if (responseContextTextLogin.get('error') != null &&
						responseContextTextLogin.get('error') != "null") {
					document.getElementById("login").className = "visible";
					document.loginForm.userName.value = "Login";
					document.loginForm.password.value = "password";
					document.getElementById("welcome").className = "hidden";
					alert(responseContextTextLogin.get('error'));
				} else {
					document.getElementById("login").className = "hidden";
					document.getElementById("welcome").className = "visible";
					document.getElementById("welcome").innerHTML = "Welcome, " + responseContextTextLogin.get('fullName') + " <input name=\"logout\" src=\"images/logout.gif\" type=\"image\" tabindex=\"5\" class=\"go\" onclick=\"javascript: logout(); return false;\"/>";
				}
			} else {
				alert('Status = ' + xmlHttpRequrrentLogin.status);
				alert('Body:\n' + xmlHttpRequrrentLogin.responseText);
			}
			xmlHttpRequrrentLogin = null;
		}
	}

	function loginNow(form) {
		if (form.userName.value == '' || form.password.value == '') {alert('Please enter login and password.'); return false;}
		
		if (xmlHttpRequrrentLogin == null) {
			var prmts = 'userName=' + form.userName.value + '&password=' + form.password.value;
			xmlHttpRequrrentLogin = requestPOST('authentication.html', prmts, callbackLogin);
		} else {
			alert('Waiting ...');
			
		}
	}
	
	function callbackLogout() {
		if (xmlHttpRequrrentLogout != null && xmlHttpRequrrentLogout.readyState == 4) {
			if (xmlHttpRequrrentLogout.status == 200) {
				responseContextTextLogout.parseResponse(xmlHttpRequrrentLogout.responseText);
//				alert(responseContextTextLogout.get('error'));
				if (responseContextTextLogout.get('error') != null &&
						responseContextTextLogout.get('error') != "null") {
					document.getElementById("login").className = "hidden";
					document.getElementById("welcome").className = "visible";
				} else {
					document.getElementById("login").className = "visible";
					document.getElementById("welcome").className = "hidden";
					document.loginForm.userName.value = "Login";
					document.loginForm.password.value = "password";
				}
			} else {
				alert('Status = ' + xmlHttpRequrrentLogin.status);
				alert('Body:\n' + xmlHttpRequrrentLogin.responseText);
			}
			xmlHttpRequrrentLogout = null;
		}
	}

	function logout() {
		
		if (xmlHttpRequrrentLogout == null) {
			xmlHttpRequrrentLogout = requestPOST('logout.html', 'targetAction=logoutStatic', callbackLogout);
		} else {
			alert('Waiting ...');
			
		}
	}
	
	function callbackAddEmail() {
		if (xmlHttpRequrrent != null && xmlHttpRequrrent.readyState == 4) {
			if (xmlHttpRequrrent.status == 200) {
				responseContextText.parseResponse(xmlHttpRequrrent.responseText);
//				alert(responseContextText.get('error'));
				if (responseContextText.get('error') != null &&
						responseContextText.get('error') != "null") {
					document.eNewsLetter.eMailNewsLetter.value = "E-mail address";
					alert(responseContextText.get('error'));
				} else {
					document.eNewsLetter.eMailNewsLetter.value = "E-mail address";
					alert('Your e-mail was added to database.');
				}
			} else {
				alert('Status = ' + xmlHttpRequrrent.status);
				alert('Body:\n' + xmlHttpRequrrent.responseText);
			}
			xmlHttpRequrrent = null;
		}
	}

	function add_email(form) {
//		alert('This work ...');
		if (!checkEmail(form.eMailNewsLetter.value)) {alert('Please specify a valid email.'); return false;}

		if (xmlHttpRequrrent == null) {
//			alert(form.eMailNewsLetter.value);
			var prmts = 'targetAction=addNewEMail&newCustomerEMail=' + form.eMailNewsLetter.value;
			xmlHttpRequrrent = requestPOST('customer.html', prmts, callbackAddEmail);
		} else {
			alert('Waiting ...');
			
		}
	}
	
function checkEmail(emailStr) {
	if (emailStr.length == 0) {
    	return false;
   	}
   	var emailPat=/^(.+)@(.+)$/;
   	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   	var validChars="\[^\\s" + specialChars + "\]";
   	var quotedUser="(\"[^\"]*\")";
   	var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   	var atom=validChars + '+';
   	var word="(" + atom + "|" + quotedUser + ")";
   	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   	var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   	var matchArray=emailStr.match(emailPat);
	
	if (matchArray == null) return false;

   	var user=matchArray[1];
	var domain=matchArray[2];
   	
   	if (user.match(userPat) == null) return false;

   	var IPArray = domain.match(ipDomainPat);
	
	if (IPArray != null) {
       	for (var i = 1; i <= 4; i++) {
			if (IPArray[i] > 255) return false;
       	}
    	return true;
   	}
	
	var domainArray=domain.match(domainPat);
   	if (domainArray == null) return false;

   	var atomPat=new RegExp(atom,"g");
   	var domArr=domain.match(atomPat);
	var len=domArr.length;
   	if ((domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 3)) return false;
   	if (len < 2) return false;
	return true;
}