public static async Task<CustomerLoginData> getCustomerLoginData(string username, string password) {
			OnlineRequestHandler client = new OnlineRequestHandler();

			Task<CustomerLoginData> cld = client.SendAsyncRequest<CustomerLoginData> ("GatewayWebapp/data/users/" + username + "/customer/loginData", null, OnlineRequestHandler.RequestType.ReqGET, 
				username, password);

			return await cld;
		}
		public static async Task<string> unlinkAccount(int siteID, int siteCustomerID, int accountID) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<string> t = request.SendAsyncRequest<string> ("GatewayWebapp/data/sites/" + siteID + "/sitecustomers/" + siteCustomerID + "/accounts/" + accountID, null, OnlineRequestHandler.RequestType.ReqDELETE);
			return await t;
		}
		public static async Task<string> linkNewAccount(string linkCode) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<string> t = request.SendAsyncRequest<string> ("GatewayWebapp/data/users/" + App.username + "/customer/accounts?linkCode=" + linkCode, null, OnlineRequestHandler.RequestType.ReqPOST);
			return await t;
		}
		public static async Task<string> markAlertMessageAsDeleted(List<int> alertIDs) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<string> t = request.SendAsyncRequest<string> ("GatewayWebapp/data/users/" + App.userInfo.userID.ToString () + "/alertMessages/delete", alertIDs, OnlineRequestHandler.RequestType.ReqPUT);
			return await t;
		}
		public static async Task<AlertMessagePage> getAlertMessages(int page, string filter) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<AlertMessagePage> alerts = request.SendAsyncRequest<AlertMessagePage> ("GatewayWebapp/data/users/" + App.userInfo.userID.ToString () + "/alertMessagesPage/" + page.ToString () + "?filter=" + filter);
			return await alerts;
		}
		public static async Task<CountryDropdownSet> getCountryDropdown() {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<CountryDropdownSet> tree = request.SendAsyncRequest<CountryDropdownSet> ("GatewayWebapp/data/anon/countrymap");
			return await tree;
		}
		public static async Task<List<MessageConfig>> getMessageConfig(int siteID, int siteUserID) {
			OnlineRequestHandler request = new OnlineRequestHandler();
			Task<List<MessageConfig>> config = request.SendAsyncRequest<List<MessageConfig>>("GatewayWebapp/data/sites/" + siteID + "/siteusers/" + siteUserID + "/messageConfig");
			return await config;
		}
		public static async Task<PurseCalendarMonth> getCalendarMonth(int purseID, int accountID, int month, int year) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<PurseCalendarMonth> calendar = request.SendAsyncRequest<PurseCalendarMonth> ("GatewayWebapp/data/sites/1743/mobile/purseCalendarMonth?purseID=" + purseID + "&accountID=" + accountID + "&month=" + month + "&year=" + year);
			return await calendar;
		}
		public static async Task<List<SessionCode>> getSessionCodesForSession() {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<List<SessionCode>> codes = request.SendAsyncRequest<List<SessionCode>> ("GatewayWebapp/data/sites/1743/items/sessions/802/sessionCodes");
			return await codes;
		}
		public static async Task<List<SessionData>> getSessionDataForDateRange(DateRange range) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<List<SessionData>> codes = request.SendAsyncRequest<List<SessionData>> ("GatewayWebapp/data/sites/1743/purse/762/sessiondata/account/117709/dateRange", range, OnlineRequestHandler.RequestType.ReqPOST);
			return await codes;
		}
		public static async Task<List<PickerEntry>> getParentsEveningMeetingsForAccount(int accountID) {
			int siteID = Utils.siteIDFromAccountID (accountID);
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<List<PickerEntry>> meetings = request.SendAsyncRequest<List<PickerEntry>> ("GatewayWebapp/data/sites/" + siteID + "/parentsevening/mobile/meetingsAvailable/" + accountID);
			return await meetings;
		}
		public static async Task<UserInfo> updateUserInfo(UserInfo userInfo) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<UserInfo> result = request.SendAsyncRequest<UserInfo> ("GatewayWebapp/data/users/" + App.username + "/userinfo", userInfo, OnlineRequestHandler.RequestType.ReqPUT);
			return await result;
		}
		public static async Task<string> updateAddress(Address address) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<string> result = request.SendAsyncRequest<string> ("GatewayWebapp/data/users/" + App.username + "/customer/updateAddress", address, OnlineRequestHandler.RequestType.ReqPUT);
			return await result;
		}
		public static async Task<string> sendTestPushNotification() {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<string> t = request.SendAsyncRequest<string> ("GatewayWebapp/data/mobile/testNotification", null, OnlineRequestHandler.RequestType.ReqPOST);
			return await t;
		}
		public static async Task<UserInfo> getUserInfo(String username) {
			OnlineRequestHandler client = new OnlineRequestHandler ();
			Task<UserInfo> userInfo = client.SendAsyncRequest<UserInfo> ("GatewayWebapp/data/users/" + username + "/userinfo");
			return await userInfo;
		}
		public static async Task<string> testLinkDeviceToUser(string regId) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<string> t = request.SendAsyncRequest<string> ("GatewayWebapp/data/anon/testLinkDevice", regId, OnlineRequestHandler.RequestType.ReqPOST);
			return await t;
		}
		public static async Task<CustomerSiteInfo> getSiteInfo(int siteID) {
			OnlineRequestHandler client = new OnlineRequestHandler ();
			Task<CustomerSiteInfo> siteInfo = client.SendAsyncRequest<CustomerSiteInfo> ("GatewayWebapp/data/sites/" + siteID.ToString () + "/customerinfo");
			return await siteInfo;
		}
		public static async Task<SiteCustomerInfo> getSiteCustomerInfo(int siteID, int siteUserID) {
			OnlineRequestHandler request = new OnlineRequestHandler();
			Task<SiteCustomerInfo> info = request.SendAsyncRequest<SiteCustomerInfo> ("GatewayWebapp/data/sites/" + siteID + "/siteuserinfo/" + siteUserID);
			return await info;
		}
		public static async Task<TransactionHistoryPage> getTransactionHistory(int siteID, int siteCustomerID, int page) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<TransactionHistoryPage> transactions = request.SendAsyncRequest<TransactionHistoryPage> ("GatewayWebapp/data/mobile/user/" + App.userInfo.userID + "/site/" + siteID + "/getTransactionHistory/" + siteCustomerID + "/" + page);
			return await transactions;				
		}
		public static async Task<List<MessageConfig>> saveMessageConfig(int siteID, int siteUserID, List<MessageConfig> config) {
			OnlineRequestHandler request = new OnlineRequestHandler();
			Task<List<MessageConfig>> savedConfig = request.SendAsyncRequest<List<MessageConfig>>("GatewayWebapp/data/sites/" + siteID + "/siteusers/" + siteUserID + "/messageConfig", config, OnlineRequestHandler.RequestType.ReqPOST);
			return await savedConfig;
		}
		public static async Task<Transaction> getTransaction(int siteID, int siteCustomerID, int transactionID) {
			OnlineRequestHandler request = new OnlineRequestHandler ();
			Task<Transaction> trx = request.SendAsyncRequest<Transaction> ("GatewayWebapp/data/sites/" + siteID + "/sitecustomers/" + siteCustomerID + "/transactions/" + transactionID);
			return await trx;
		}