/**
 * @name        Corners
 * @overview    An automated documentation publishing system for JavaScript.
 * @version        0.1
 * @revision    corners.js 2007-05-09 21:54:13
 * @author        Michael Ord <a href="mailto:michael.ord@think.eu">michael.ord@think.eu</a>
 */
ThinkCo.namespace ('ThinkCo.component');
/**
 * The container class for all classes in this library.
 * @class
 * @abstract
 * @private
 */
ThinkCo.component.Corners    = {};
/**
 * @method
 * @description    --
 * @static
 * @param        {String} className
 * @param        {String} tag
 * @param        {String|HTMLElement} [base]
 * @param        {Number} [corners]
 * @param        {String} [classes]
 * @param        {String} [elmTag]
 */
ThinkCo.component.Corners.internal = function (className, tag, base, corners, elmTag) {
    if (!tag) {
        tag        = '*';
    };
    if (!base) {
        base    = '';
    };
    if (corners == null) {
        corners    = 4;
    };
    if (!elmTag) {
        elmTag    = 'div';
    };
    /**
     * @function    _internal
     * @description    --
     * @private
     * @param        {Object} x --
     * @param        {Object} x --
     * @param        {Object} x --
     */
    var _internal = function (el, num, elmTag) {
        for (var j = 1; j <= num; j++) {
            el.appendChild (YAHOO.util.Dom.create (elmTag, { className : 'jsCorner crn-' + j }));
        };
    };
    var items;
    if ( typeof ( className ) == 'object' ) {
        items    = className;
    } else {
        items    = YAHOO.util.Dom.getElementsByClassName (className, tag, base);
    };
    for (var i = 0; i < items.length; i++) {
        _internal (items [ i ], corners, elmTag);
    };
};
/**
 * @method
 * @description    --
 * @static
 * @param        {String} className
 * @param        {String} tag
 * @param        {String|HTMLElement} [base]
 * @param        {Number} [corners]
 * @param        {String} [classes]
 * @param        {String} [elmTag]
 */
ThinkCo.component.Corners.internalWrap = function (className, tag, base, corners, elmTag, classes, prefix) {
    if (!tag) {
        tag        = '*';
    };
    if (!base) {
        base    = '';
    };
    if (corners == null) {
        corners    = 4;
    };
    if (!elmTag) {
        elmTag    = 'div';
    };
    if (typeof (classes) == 'string') {
        classes    = classes.split (' ');
    };
    if (!classes) {
        classes    = [];
    };
    if (prefix == null) {
        prefix    = '';
    };
    /**
     * @function    _internalWrap
     * @description    --
     * @private
     * @param        {Object} x --
     * @param        {Object} x --
     * @param        {Object} x --
     * @param        {Object} x --
     */
    var _internalWrap = function (el, num, elmTag, classes, prefix) {
        el    = YAHOO.util.Dom.get ( el );
        for (var f = 0; f < classes.length; f++) {
            YAHOO.util.Dom.addClass (el, classes [ f ]);
        };
        var tmp_elementRoot    = tmp_element = YAHOO.util.Dom.create (elmTag, { className : 'jsCorner ' + prefix + 'crn-' + 1 });
        for (var j = 2; j <= num; j++) {
            var tmp_element2    = YAHOO.util.Dom.create (elmTag, { className : 'jsCorner ' + prefix + 'crn-' + j });
            tmp_element.appendChild (tmp_element2);
            tmp_element            = tmp_element2;
        };
        var tmp_children    = el.childNodes;
        for (var z = 0; z < tmp_children.length; z++) {
            if (tmp_children[z].nodeType == 1) {
                tmp_element.appendChild (tmp_children [ z ]);
            };
        };
        el.appendChild (tmp_elementRoot);
    };
    var items;
    if ( typeof ( className ) == 'object' ) {
        items    = className;
    } else {
        items    = YAHOO.util.Dom.getElementsByClassName (className, tag, base);
    };
    for (var i = 0; i < items.length; i++) {
        _internalWrap (items [ i ], corners, elmTag, classes, prefix);
    };
};

/**
 * @method
 * @description    --
 * @static
 * @param        {String} className
 * @param        {String} tag
 * @param        {String|HTMLElement} [base]
 * @param        {Number} [corners]
 * @param        {String} [classes]
 * @param        {String} [elmTag]
 */
ThinkCo.component.Corners.externalWrap = function (className, tag, base, corners, classes, elmTag) {
    if (!tag) {
        tag        = '*';
    };
    if (!base) {
        base    = '';
    };
    if (corners == null) {
        corners    = 4;
    };
    if (!elmTag) {
        elmTag    = 'div';
    };
    if (!classes) {
        classes    = '';
    };
    /**
     * @function    _externalWrap
     * @description    --
     * @private
     * @param        {Object} x --
     * @param        {Object} x --
     * @param        {Object} x --
     * @param        {Object} x --
     * @param        {Object} x --
     */
    var _externalWrap = function (el, num, classes, elmTag, main) {
        el    = YAHOO.util.Dom.get ( el );
        el.parentNode.replaceChild (main = YAHOO.util.Dom.create (elmTag, { className : 'jsCorner ' + classes }), el);
        for (var j = 1; j <= num; j++) {
            main.appendChild (main = YAHOO.util.Dom.create (elmTag, { className : 'jsCorner crn-' + j }));
        };
        main.appendChild (el);
    };
    var items;
    if ( typeof ( className ) == 'object' ) {
        items    = className;
    } else {
        items    = YAHOO.util.Dom.getElementsByClassName (className, tag, base);
    };
    for (var i = 0; i < items.length; i++) {
        _externalWrap (items [ i ], corners, classes, elmTag);
    };
};
