﻿/** 
* 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);
    },

    getAddressAndMatrikelKey: function(lonlat, callback) {
        var geocodeServiceProxy = new Geocode();
        geocodeServiceProxy.set_defaultSucceededCallback(callback);
        geocodeServiceProxy.set_defaultFailedCallback(this.callbackFail);
        geocodeServiceProxy.GetAddressAndMatrikelKey(lonlat.lon, lonlat.lat);
    },

    findAWSAdrAndGeokeysAdr: function(adr,postalcode, lonlat, callback) {
        var geocodeServiceProxy = new Geocode();
        geocodeServiceProxy.set_defaultSucceededCallback(callback);
        geocodeServiceProxy.set_defaultFailedCallback(this.callbackFail);
        geocodeServiceProxy.FindAWSAdrAndGeokeysAdr(adr, postalcode, lonlat.lat, lonlat.lon);
    },

    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);
    },

    getimportProgress: function(jsmethod) {
        var importProgressProxy = new ImportService();
        importProgressProxy.set_defaultSucceededCallback(jsmethod);
        importProgressProxy.set_defaultFailedCallback(this.callbackFail);
        importProgressProxy.GetImportProgress();
    },
    
    getImportErrors: function(jsmethod){
        var importProgressProxy = new ImportService();
        importProgressProxy.set_defaultSucceededCallback(jsmethod);
        importProgressProxy.set_defaultFailedCallback(this.callbackFail);
        importProgressProxy.GetImportErrors();
    },
    
    SetPageSize: function(pagesize,jsmethod) {
        var importProgressProxy = new ImportService();
        importProgressProxy.set_defaultSucceededCallback(jsmethod);
        importProgressProxy.set_defaultFailedCallback(this.callbackFail);
        importProgressProxy.SetPageSize(pagesize);
    },
    
    getdata: function(ids,jsmethod) {
        var geocodeServiceProxy = new Geocode();
        geocodeServiceProxy.set_defaultSucceededCallback(jsmethod);
        geocodeServiceProxy.set_defaultFailedCallback(this.callbackFail);
        geocodeServiceProxy.Getdata(ids);
    },

    /** 
    * 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"
});


