/// <summary>
        /// Vraca listu elemenata u skladu sa upitom
        /// </summary>
        /// <param name="qRelation"></param>
        /// <param name="qReference"></param>
        /// <param name="limit"></param>
        /// <returns></returns>
        public contentElementList Query(contentRelationType qRelation, IContentElement qReference, int limit = -1)
        {
            contentElementList output = new contentElementList();
            int             i         = 0;
            IContentElement hIndex;

            switch (qRelation)
            {
            case contentRelationType.self:
                output.AddNullSafe(qReference);
                break;

            case contentRelationType.next:
                output.AddNullSafe(qReference.next);
                break;

            case contentRelationType.prev:
                output.AddNullSafe(qReference.prev);
                break;

            case contentRelationType.both:
                output.AddNullSafe(qReference.next);
                output.AddNullSafe(qReference.prev);
                break;

            case contentRelationType.manyBoth:

                break;

            case contentRelationType.manyNext:
                hIndex = qReference;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.next, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.manyPrev:
                hIndex = qReference;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.prev, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.parent:
                output.AddNullSafe(qReference.parent);
                break;

            case contentRelationType.manyParent:
                hIndex = qReference;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.parent, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.parentOneBefore:
                hIndex = qReference.parent;
                if (hIndex != null)
                {
                    hIndex = take(hIndex, contentRelationType.prev);
                    output.AddNullSafe(hIndex);
                }
                break;

            case contentRelationType.parentOneAfter:
                hIndex = qReference.parent;
                if (hIndex != null)
                {
                    hIndex = take(hIndex, contentRelationType.next);
                    output.AddNullSafe(hIndex);
                }
                break;

            case contentRelationType.parentManyBefore:
                hIndex = qReference.parent;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.prev, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            case contentRelationType.parentManyAfter:
                hIndex = qReference.parent;
                do
                {
                    hIndex = takeIndex(hIndex, contentRelationType.next, i, limit);
                    output.AddNullSafe(hIndex);
                    i++;
                } while (hIndex != null);
                break;

            default:
                logSystem.log("contentCollection Query :: contentRelationType not supported: [" + qRelation.ToString() + "]", logType.ExecutionError);
                break;
            }
            return(output);
        }