﻿/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is VisKort.
*
* The Initial Developer of the Original Code is
* IT- og Telestyrelsen / Danish National IT and Telecom Agency.
* Portions created by the Initial Developer are Copyright (C) 2010
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):

* Lars Klindt Mogensen
* Morten Bødtkjer
* Niels Kinnerup
* Thomas Bergstedt
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */

/** 
* Class: VisKort.Services
*
* Utility class to handle interaction with server-side services
*/
VisKort.Utils.Services = OpenLayers.Class({

	/** 
	* Constructor: VisKort.Services
	*/
	initialize: function() {
	},

	/** 
	* Method: reverseGeocodeLonlat
	* Method to call service to reverse geocode (find an address from a coordinat set)
	*
	* lonlat - <OpenLayers.LonLat>
	* callback - <Function> callback function (on success)
	*/
	reverseGeocodeLonlat: function(lonlat, callback) {
		var geocodeServiceProxy = new Geocode();
		geocodeServiceProxy.set_defaultSucceededCallback(callback);
		geocodeServiceProxy.set_defaultFailedCallback(this.callbackFail);
		geocodeServiceProxy.ReverseGeocode(lonlat.lon, lonlat.lat);
	},

	getstiftinfo: function(args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetstiftInfo(args);
	},

	getprovstiinfo: function(args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetprovstiInfo(args);
	},

	getparishinfo: function(args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetparishInfo(args);
	},

	getstiftbbox: function(args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetStiftBBOX(args);
	},

	getprovstibbox: function(args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetProvstiBBOX(args);
	},

	getparishbbox: function(args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetparishBBOX(args);
	},

	getcodes: function(type, args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetCodes(type, args);
	},

	getlistprovstiparish: function(args1, args2, args3, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetListProvstiAndParish(args1, args2, args3);
	},
	getlistsforstift: function(args, callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetListProvstiAndAllParish(args);
	},
	getallprovsti: function(callback) {
		var parishserviceProxy = new ParishService();
		parishserviceProxy.set_defaultSucceededCallback(callback);
		parishserviceProxy.set_defaultFailedCallback(this.callbackFail);
		parishserviceProxy.GetAllprovsti();
	},
	getregions: function(jsmethod) {
		var regionProxy = new RegionMunicipalityService();
		regionProxy.set_defaultSucceededCallback(jsmethod);
		regionProxy.set_defaultFailedCallback(this.callbackFail);
		regionProxy.GetRegions();
	},
	getmunicipalitys: function(regionscode, jsmethod) {
		var regionProxy = new RegionMunicipalityService();
		regionProxy.set_defaultSucceededCallback(jsmethod);
		regionProxy.set_defaultFailedCallback(this.callbackFail);
		regionProxy.GetMunicipalitys(regionscode);
	},
	getregionbbox: function(regionscode, jsmethod) {
		var regionProxy = new RegionMunicipalityService();
		regionProxy.set_defaultSucceededCallback(jsmethod);
		regionProxy.set_defaultFailedCallback(this.callbackFail);
		regionProxy.GetRegionBbox(regionscode);
	},
	getmunicipalitybbox: function(municipalitycode, jsmethod) {
		var municipalityProxy = new RegionMunicipalityService();
		municipalityProxy.set_defaultSucceededCallback(jsmethod);
		municipalityProxy.set_defaultFailedCallback(this.callbackFail);
		municipalityProxy.GetMunicipalityBbox(municipalitycode);
	},
	getmunicipalityregion: function(municipalitycode, jsmethod) {
		var municipalityProxy = new RegionMunicipalityService();
		municipalityProxy.set_defaultSucceededCallback(jsmethod);
		municipalityProxy.set_defaultFailedCallback(this.callbackFail);
		municipalityProxy.GetMunicipalityRegion(municipalitycode);
	}, 
	getmunicipalitymunicipalities: function(municipalitycode, jsmethod) {
		var municipalityProxy = new RegionMunicipalityService();
		municipalityProxy.set_defaultSucceededCallback(jsmethod);
		municipalityProxy.set_defaultFailedCallback(this.callbackFail);
		municipalityProxy.GetMunicipalityMunicipalities(municipalitycode);
	},
	callgodadgangservice: function(servicelink, jsmethod) {
		var godadgangProxy = new GodadgangService();
		godadgangProxy.set_defaultSucceededCallback(jsmethod);
		godadgangProxy.set_defaultFailedCallback(this.callbackFail);
		godadgangProxy.CallGodadgangService(servicelink);
	},
	
	/** 
	* Method: callbackFail
	* Local service callback method (on failure). Displays the error
	*/
	callbackFail: function(args) {
		//alert("En service returnede en fejl: " + args);
	},

	CLASS_NAME: "VisKort.Utils.Services"
});


