/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 */

/**
 * Utils.js
 *
 * File Path: /scripts/
 *
 * $Id: Utils.js 176 2007-08-28 15:28:04Z topdog $
 *
 * LICENSE: copyright 2005 - 2007 Edward Vermillion - Doggydoo Codeworks.
 * Unless otherwise stated ALL RIGHTS ARE RESERVED. Use or reuse without prior
 * written permission from the author or Doggydoo Codeworks is prohibited.
 * Visit http://www.doggydoo.net/license/DDJS-V1.X.txt for the full license.
 * Installation and use of this software implies agreement to the full
 * license.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DOGGYDOO
 * CODEWORKS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @package     DDJS
 * @author      Edward Vermillion <evermillion@doggydoo.net>
 * @copyright   2005 - 2007 Edward Vermillion, Doggydoo Codeworks
 * @license     http://www.doggydoo.net/license/DDJS-1.x.txt
 * @version     1.0
 */

/**
 * Generic utilities class
 */
DDJS.Utils = {

    /**
     * @method generateRandomString
     *
     * Generates a quazi-random alpha-numeric string.
     *
     * @param {Number} stringLength
     * @return {String}
     */
    generateRandomString: function (stringLength) {
    	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    	var randomstring = '';
    	for (var i = 0; i < stringLength; i++) {
    		randomstring += chars.charAt(Math.floor(Math.random() * chars.length));
    	}
    	return randomstring;
    },
    
    /**
     * @method generateObjectID
     * 
     * Generates an id for use in registering objects in object containers.
     * 
     * @requires DDJS.Utils.MD5 or DDJS.Utils.SHA1 or DDJS.Utils.UUID
     * 
     * @param {String} type
     * @return {String}
     */
    generateObjectID: function (type) {
        
        switch (type) {
        	
            case 'md5':
            case '1':
                return DDJS.Utils.MD5.md5(DDJS.Utils.generateRandomString(10) + Date().toString);
                break;
            
            case 'sha1':
            case '2':
                return DDJS.Utils.SHA1.sha1(DDJS.Utils.generateRandomString(10) + Date().toString);
                break;
            
            case 'uuidTime':
            case '3':
                return DDJS.Utils.UUID.getTime();
                break;
            
            case 'uuidRand':
            case '4':
                return DDJS.Utils.UUID.getRandom();
                break;
            
            default:
                return DDJS.Utils.generateRandomString(15);
        }
        
    },

    /**
     * @method toString
     * @return {String}
     */
    toString: function () {
        return '[Object] DDJS.Utils';
    }

}; // End DDJS.Utils

