/**
 *  Javascript Framework  - Core
 *
 * Copyright (c) 2007 Sina.com
 *
 * $Id: Core.js 977 2007-11-12 07:27:30Z libing $
 */
 
if ( typeof vlib != 'undefined' )
{
	var _vlib = vlib;
	throw 'vlib defined before the core loaded.';
}

var vlib = 
{
	Version: '0.1',
	
	Util: [ 'Ajax','Array','Cookie','Dom','Event','Template','Json','String','Effect' ],
	
    Core: [ 'Menu' ],
	
    /**
             * 判断是否为Firefox 
             * @type    boolean
             */
    FF: navigator.userAgent.toLowerCase().indexOf('firefox') != -1,

    /**
             * 判断是否为IE 
             * @type    boolean
             */	
    IE: navigator.userAgent.toLowerCase().indexOf('msie') != -1
}; 


/**
 *  通过属性id获取一个或多个页面元素
 *
 *  @param 	 {String / Array/Object} 	页面元素的ID,字符串或者数组
 *
 *  @return 	页面元素或者多个页面元素的数组
 *  
 *  @useage 	
 *              $('buttona')
 *              $('buttona','buttonb')
 */
 
$ = function()
{
	var ret = ( arguments.length == 0 ) ? null : [];
		
	if ( arguments.length == 1 )
    {
        if ( typeof arguments[0] != 'string' )  //参数本身为对象
            ret = arguments[0];
        else
        {        
            var m = /^(\w+)$|^#([\w| ]+)$|^(\w+) #(\w+)$|^(\w+) :(\w+)$/.exec ( arguments[0] );
        		
            if ( m && m[1] )        //Id
                ret = document.getElementById(m[1]);
            else if (  m && ( m[2]  || m[3] && m[4] ) )   //Classname
            {
                var c = document.getElementsByTagName( m[3] || '*');
                for ( var i = 0, len = c.length; i < len; i++ )
                    if ( c[i].className.match( new RegExp("(^|\\s)" + ( m[4] || m[2] ) + "(\\s|$)" ) ) )
                        ret.push(c[i]);
                        
                ret = ( ret.length >= 1 ) ? ret : document.getElementById(arguments[0]);
            }
            else if ( m && m[5] && m[6] )   //Tagname && Attribute
            {
                var c = document.getElementsByTagName( m[5] );
                for ( var i = 0, len = c.length; i < len; i++ )
                    if ( !isNull(c[i].getAttribute(m[6])) )
                        ret.push(c[i]);
            }
        }
    }
    else if ( arguments.length > 1 ) 
	{
		for ( var i = 0, len = arguments.length; i < len; i++ )
			ret.push ( $(arguments[i]) );
	}
    
    return ret;
}


/**
 *  判断一个对象是否为空对象
 *
 *  @param 	 {Object} 	需要检测的对象
 *
 *  @return 	Boolean
 */
 
isNull = function (o)
{							
	return ( o=="" || o == null || o == "undefined" );
}
