// Author : Hangring
// Date : 2006.9.11
// Email: outlou [at] hotmail [dot] com
// (c) 2006 Hangring

// object or list
// arguments is 'id' or ('id1', 'id2', ..., 'idn')
function $ () {
    var $_ = arguments;
    if ($_.length == 1) {
        $_ = typeof $_[0] == 'string' ? getObject($_[0]) : $_[0];
    }
    else if ($_.length > 1) {
        for (var i = 0; i < $_.length; i++) {
            $_[i] = typeof $_[i] == 'string' ? getObject($_[i]) : $_[i];
        }
    }
    else {
        $_ = null;
    }
    return $_;
}

// tag name
// arguments is 'tag' or ('tag1', 'tag2', ..., 'tagn')
// $$('tag') 或 $$('tag1', 'tag2', ..., 'tagn')
function $$ () {
    var $_ = arguments;

    $_.length == 1 && ($_ = get_E_B_Tag ($_[0]));

    if ($_.length > 1) {
        for (var i = 0; i < $_.length; i++) {
            $_[i] = get_E_B_Tag ($_[i]);
        }
    }

    return $_.length > 0 ? $_ : null;
}

// form
// arguments is 'form' or ('form1', 'form2', ..., 'formn')
// 获取某表单或所有表单数组
// $Form() 或 $Form('form1', 'form2', ..., 'formn') 或 $Form(id) 或 $Form(name)
function $Form () {
    var $_ = arguments;
    try {
        if ($_.length == 0) {
            $_ = getForm();
        }
        else if ($_.length > 1) {
            for (var i = 0; i < $_.length; i++) {
                $_[i] = getForm($_[i]);
            }
        }
        else {
            $_ = $($_[0]);
        }
    }
    catch (e) {
        $_ = getForm ($_[0]);
    }
    return $_;
}

// element # (form, element) or (element)
// 返回某表单元素对象
// $Element(form, element) or $Element(element)
function $Element () {
    var $_ = arguments;
    if ($_.length == 1) {
        var _forms = $Form();
        for (var i = 0; i < _forms.length; i++) {
            if (_forms[i].elements[$_[0]]) {
                $_[$_.length] = _forms[i].elements[$_[0]];
            }
        }
    }
    else if ($_.length == 2) {
        $_ = $Form($_[0]).elements[$_[1]];
    }
    else {
        $_ = [];
    }
    return $_;
}

function $tag (tag, container) {
    container = container || document;
    return container.getElementsByTagName(tag);
}

// %form
// 直接调用$QS可获取所有`name=value`对保存于window.$querystring
//   <__并返回`name=value`列表对象
// $QS()['element'] 可获取某个键值
function $QS () {
    if (typeof window.$querystring == 'undefined') {
        window.$querystring = {};

        var query = location.search;
        query = query.substr(1);
        query = query.split('&');
        for (var i = 0; i < query.length; i++) {
            var item = query[i].split('=');
            window.$querystring[item[0]] = item[1] || '';
        }
    }
    return window.$querystring;
}

// url
// return object -> [string, string, ..., string]
function $Query () {
    var $_ = arguments;

    $_.length == 1 && ($_ = $_[0] in $QS() ? $QS()[$_[0]] : '');

    if ($_.length > 1) {
        for (var i = 0; i < $_.length; i++) {
            $_[i] = $_[i] in $QS() ? $QS()[$_[i]] : '';
        }
    }
    return $_;
}

// event
function $Event (e) {
    return window.event || e || null;
}

// object of event
function $EventObj (e) {
    e = $Event(e);
    return e.target || e.srcElement || null;
}