﻿(function () {
	var window = this,
        $ = jQuery,
        controller,
        view,
        model,
		bridge;
		
	$.km = {
		bridge : {},
		ui : {},
		data : {}
	};

	controller = {

	};
	
	bridge = {
	    bridgeId: 'js_net_bridge',
	    eventDates: [],
	    selectedDate: null,
	    getBridgeValues: function() {
			$('#' + this.bridgeId + ' input').each(function(index, elm) {
	            $.km.bridge[elm.id] = elm.value;
	        });
	    }
	};
	

	
	view = {
	};
		
		
	data = {
		dataType: null,
		method: null,
		url: null,
		responseData: null,
		callbackEvent: null,
		payload: null,

		handle: function() {
			if (arguments[0].d.ResponseStatus === 200) {
				$(window).trigger(this.callback, arguments[0].d.Response);
			} else {
				$.km.data.handleError(arguments[0].d.ResponseStatus + ' => ' + arguments[0].d.ResponseMessage);
			}
		},

		reset: function() {
			this.dataType = null;
			this.method = null;
			this.url = null;
			this.payload = null;
			this.responseData = null;
			this.callbackEvent = null;
		},

		doJsonGet: function(callbackEvent) {
			$.ajax({
				url: '/ui/scripts/services/service.aspx',
				type: 'get',
				dataType: 'json',
				callback: callbackEvent,
				success: $.km.data.handle
			});
		},

		doJsonPost: function(callbackEvent, payload) {
			$.ajax({
				url: $.km.bridge.servicesUrl,
				type: 'post',
				dataType: 'json',
				contentType: 'application/json',
				data: $.toJSON({ complexCommands: $.toJSON(payload) }),
				callback: callbackEvent,
				success: $.km.data.handle
			});
		},

		handleError: function(err) {
			throw new Error(err);
		}
	};

	
	$.extend(true, $.km.bridge, bridge);
	$.extend(true, $.km.ui, view);
	$.extend(true, $.km.data, data);
	
	$(window).bindEvent({
	    event: 'dom:ready',
	    callback: [
        	{ n: '$.km.bridge', f: 'getBridgeValues' }
    	]
	});
	
})();

$(document).ready(function() {
	$(window).trigger('dom:ready');
});
