﻿(function($) {
    $.icms = { version: '0.1.0' };

    $.icms.Options = {
        datatype: 'XML', /* XML | JSON */
        service_url: '/CM.asmx'
    };

    /* Objects */
    $.icms.Page = function(data) {
        var p = this;
        var pageNode = $(data);
        p.pagename = pageNode.attr('n');
        p.id = pageNode.attr('id');
        p.culture = pageNode.attr('c');
        p.url = pageNode.attr('pp');
        p.items = new Array();
        pageNode.find('i').each(function() {
            var i = $(this);
            p.items[i.attr('c')] = i.text();
        });
    };

    $.icms.Page.prototype = new $.icms.Page();
    $.icms.Page.constructor = new $.icms.Page;

    /* Utilities */
    var parseXmlPages = function(data) {
        var c = { 'ps': new Array(), 'totalCount': 0 };
        var ps = $(data);
        ps.find('p').each(function() {
            var p = new $.icms.Page(this);
            c.ps.push(p);
        });
        c.totalCount = ps.find('ps').attr('t');
        return c;
    };

    /* Services */
    $.icms.pagesByModel = function(args, callback) {
        var opts = {
            'cultureCode': 'fr',
            'modelCode': '',
            'query': '',
            'startRowIndex': 0,
            'maximumRows': 0
        };
        $.extend(opts, args);
        $.get($.icms.Options.service_url + '/PagesByModel',
                { 'cultureCode': opts.cultureCode,
                    'maximumRows': 0,
                    'modelCode': opts.modelCode,
                    'orderBy': 'NodeOrder',
                    'query': opts.query,
                    'startRowIndex': opts.startRowIndex,
                    'maximumRows': opts.maximumRows
                },
                function(data) { var c = parseXmlPages(data); callback(c.ps, opts.startRowIndex, c.totalCount); });
    };

    //    $.fn.icms = function(args) {
    //        $.extend(opts, args);
    //        return this.each(function() { });
    //    };

})(jQuery);
