﻿/** 
* 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);
	},
	
	/** 
	* 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"
});

