﻿function ViewLoader($elt) {
    var self = this;
    self.$elt = $elt;

    self.Init = function () {
        $('.js-ajaxload').each(self.Preload);
        self.$elt.bind('loadContent', self.LoadLink);
    };

    self.Preload = function (i, ele) {
        var $elt = $(ele);
        var url = $elt.data('url');
        
        self.LoadView(url, $elt);
    };

    self.LoadLink = function (e, url, selector) {
        var $elt = $(selector, self.$elt);
        self.LoadView(url, $elt);
    };

    self.LoadView = function (url, $elt) {
        $.ajax({
            url: url,
            dataType: 'html',
            type: 'post',
            success: function (data) { self.LoadSuccess(data, $elt); }, //Javascript is so elegant some times. 
            error: self.LoadError
        });
    };

    self.LoadSuccess = function (data, $elt) {
        $($elt).html('');
        $(data).appendTo($elt).trigger('create').trigger('content-loaded').trigger('updatelayout'); 

    };

    self.LoadError = function (data, $elt) {
        //This should do something like pop a dialog that says an error occured.
        //Part of item to come.
    };

    

}

$.fn.ViewLoader = function () {
    $(this).each(function (i, ele) {
        var $elt = $(ele);
        if ($elt.data('object')) return;
        $elt.data('object', new ViewLoader($elt));
        $elt.data('object').Init();
    });
};
