﻿



jQuery.parsePaging = function(pagingString) {

    var psize = jQuery.getPagingParam(pagingString, 'Ps');
    var poffset = jQuery.getPagingParam(pagingString, 'Po');
    var pproperty = jQuery.getPagingParam(pagingString, 'Psp');
    var pdirection = jQuery.getPagingParam(pagingString, 'Pd');

    return {
        size: psize,
        offset: poffset,
        property: pproperty,
        direction: pdirection
    }

}


jQuery.renderPaging = function(config) {

    var offsetString = '';
    var sizeString = '';
    var propertyString = '';
    var directionString = '';

    if (!jQuery.IsEmptyString(config.offset)) {
        offsetString = 'Po_' + config.offset;
    }

    if (!jQuery.IsEmptyString(config.size)) {
        sizeString = 'Ps_' + config.size;
    }

    if (!jQuery.IsEmptyString(config.property)) {
        propertyString = 'Psp_' + config.property;
    }

    if (!jQuery.IsEmptyString(config.direction)) {
        directionString = 'Psd_' + config.direction;
    }

    var resultString = '';

    resultString = jQuery.AppendIfNotEmpty(resultString, '~', offsetString);
    resultString = jQuery.AppendIfNotEmpty(resultString, '~', sizeString);
    resultString = jQuery.AppendIfNotEmpty(resultString, '~', propertyString);
    resultString = jQuery.AppendIfNotEmpty(resultString, '~', directionString);

    return resultString;

}
jQuery.AppendIfNotEmpty = function(result, delimiter, appendage) {

    if (jQuery.IsEmptyString(appendage)) return result;
    if (jQuery.IsEmptyString(result)) return appendage;
    return result + delimiter + appendage;
}

jQuery.IsEmptyString = function(param) {
    return ((!param) || (param.length == 0));
}


jQuery.getPagingParam = function(pagingstring, paramname) {

    if (jQuery.IsEmptyString(pagingstring) || jQuery.IsEmptyString(paramname)) return null;

    var pagingElements = pagingstring.split('~');

    for (i = 0; i < pagingElements.length; i++) {
        var elements = pagingElements[i].split('_');
        if (elements.length == 2) {
            if (elements[0] == paramname) {
                return elements[1];
            }
        }
    }
    return null;
}
jQuery.DomParser = {

    initialize: function(xmlstring) {
        return this.parseXMLString(xmlstring);
    },

    getInnerHTML: function(elementid, docObject) {
        if (window.ActiveXObject) {
            var result = jQuery.DomParser.getMSInnerHTML(docObject.nodeFromID(elementid));
            if (!result) { this.alertError('unable to find element', elementid); }
            return result;
        } else {
            var result = docObject.getElementById(elementid);
            if (!result) { jQuery.DomParser.alertError('unable to find element', elementid); }
            return result.innerHTML;
        }

    },

    getMSInnerHTML: function(node) {

        var result = [];

        for (var i = 0; i < node.childNodes.length; i++) {
            result.push(node.childNodes[i].xml);
        }
        return result.join("");

    },

    parseXMLString: function(str) {
        if (window.ActiveXObject) {
            var msloader = new ActiveXObject("Microsoft.XMLDOM");
            msloader.async = true;
            msloader.loadXML(str);
            var err = msloader.parseError;
            if (err.errorCode != 0) {
                this.alertError(err.reason, str);
            }
            return msloader;
        }
        else {
            var ffloader = new DOMParser();
            var element = ffloader.parseFromString(str, "text/xml");
            if (element.firstChild.tagName == 'parsererror') {
                this.alertError(element.firstChild.firstChild.nodeValue, str);
            }
            return element;
        }
    },
    alertError: function(description, context) {
        throw new Error('error:' + description + ' context: ' + context);
    }
}




jQuery.ArgumentExists = function(arg, message) {
    if ((!arg) || arg == '') {
        var exceptionMessage = 'Assertion failed arg cannot be null : ' + message;
        throw exceptionMessage;
    }
}