﻿function NewsProxy() {
    var newsUrl = "/clientServices/news.svc/loadNews",
        pressUrl = "/clientServices/news.svc/loadPressreleases",
        eventUrl = "/clientServices/news.svc/loadCalendarevents",
        calenderUrl = "/clientServices/news.svc/loadCalendaryears",
        pageSize = 10;

    this.loadNews = function (pageNumber, year, callback) {
        makeCall(newsUrl, arguments)
    }

    this.loadPressreleases = function (pageNumber, year, startPage, callback) {
    	makeCall(pressUrl, arguments)
    }

    this.loadCalendarevents = function (callback) {
        makeCall(eventUrl, arguments)
	}

    this.loadCalendaryears = function (callback) {
        makeCall(calenderUrl, arguments)
	}


    function makeCall(serviceUrl, args) {
    	var callback = args[args.length - 1],
            requestData = createData(args);
        if(!callback)
            callback = function () { alert('No callback specified'); }

        $.ajax({
            url: serviceUrl,
            type: "POST",
            contentType: "application/json",
            timeout: 15000,
            data: requestData,
            success: callback,
            error: callbackError
        });
    }


    function createData(args) {
    	if (args.length == 1)
    		return JSON.stringify({ pageNumber: 0, pageSize: 0 });
    	if (args.length == 2)
    		return JSON.stringify({ pageNumber: args[0], pageSize: pageSize });

    	if (args[2] != null) {
    		return JSON.stringify({ pageNumber: args[0], year: args[1], pageSize: pageSize, startPage: args[2] });
    	}
    	else {
    		return JSON.stringify({ pageNumber: args[0], year: args[1], pageSize: pageSize });
    	}
    }

    function callbackError() {
        alert('Fail!');
    }

    //debug
    this.test = function () {
    	this.loadNews(0);
    	this.loadPressreleases(0);
    	this.loadCalendarevents(0);
    	this.loadCalendaryears(0);
    }
}
