public void login() {
		try {
			// Process Login
			loginResult = null;
			ProcessLogin processLogin = new ProcessLogin() {
				public void onComplete() {
					if(getErrorCode() != null) {
						if(processInit != null) {
							processInit.setErrorCode(getErrorCode());
						}
					} else {
						TravelSDK.INSTANCE.loginResult = getResult();
						if (TravelSDK.logger.isDebug()) {
							TravelSDK.logger.debug("Login access token: " + loginResult.getAccessToken());
						}
					}
				}

				public String getLoadingMessage() {
					if (processInit != null) {
						return processInit.getLoadingMessage();
					}
					return null;
				}
			};

			StringBuffer stringBuffer = new StringBuffer(settingsResult.getWsUrl());
			stringBuffer.append("?prgm=auth.login");
			stringBuffer.append("&client=").append(client);
			stringBuffer.append("&username=").append(username);
			stringBuffer.append("&password=").append(password);
			stringBuffer.append("&app=BB&ver=").append(TravelSDK.VERSION);
			stringBuffer.append("&user_id=").append(TravelSDK.INSTANCE.mobileClient);

			new RequestThread(stringBuffer.toString(), processLogin).run();
		} catch (Exception e) {
			logger.error(e, "Error on Login");
			if(processInit != null) {
				processInit.setErrorCode(ErrorCodes.ERROR_RESPONSE);
			}
		}
	}