function _getAttribute(ele, attrName) {
    var ret = eval('ele.' + attrName) || ele.getAttribute(attrName);
    return ret == null ? false : ret;
}
function _collectData(formId) {
    var _form = document.getElementById(formId);
    var _input_texts = [], _input_checkboxes = [], _input_radios = [];
    var _inputs = _form.getElementsByTagName('INPUT');
    for (var i = 0; i < _inputs.length; i++) {
        switch (_inputs[i].type.toLowerCase()) {
            case 'text':
                _input_texts.push(_inputs[i]);
                break;
            case 'checkbox':
                _input_checkboxes.push(_inputs[i]);
                break;
            case 'radio':
                _input_radios.push(_inputs[i]);
                break;
        }
    }

    var _ret = [];
    _ret.push(_collectForm(_form));
    _ret.push(_collectElements(_input_texts));
    _ret.push(_collectElements(_form.getElementsByTagName('SELECT')));
    _ret.push(_collectElements(_form.getElementsByTagName('TEXTAREA')));
    _ret.push(_collectCheckboxes(_input_checkboxes));
    _ret.push(_collectRadios(_input_radios));
    var _err='';
    for(var j=0;j<_ret.length;j++){
        _err+=_ret[j].err;
    }
    if (_err.length > 0) alert(_err);
    else {
        var _submit = document.createElement('form');
        _submit.setAttribute('method', 'post');
        _submit.setAttribute('action', 'spform.ashx');
        for (var k = 0; k < _ret.length; k++) {
            //alert(_ret[k].data);
            var _data=_ret[k].data;
            for (var m = 0; m < _data.length; m++) {
                var _item = document.createElement('input');
                _item.setAttribute('type', 'hidden');
                _item.setAttribute('name', _data[m][0]);
                _item.setAttribute('value', _data[m][1]);
                _submit.appendChild(_item);
                //alert(_data[m][0]+','+_data[m][1]);
            }
        }
        var _body = document.getElementsByTagName('BODY')[0];
        _body.appendChild(_submit);
        _submit.submit();
        _body.removeChild(_submit);
    }
}
function _collectForm(ele) {
    var _err = '';
    var _data = [];
    //spform_name,spform_id,spform_returnurl,spform_notification
    _data.push(['spform_name', _getAttribute(ele, 'name')]);
    _data.push(['spform_id', _getAttribute(ele, 'id')]);
    var _returnurl = _getAttribute(ele, 'returnurl');
    var _email = _getAttribute(ele, 'email');
    if (_returnurl) _data.push(['spform_returnurl', _returnurl]);
    if (_email) _data.push(['spform_notification', _email]);
    return { data: _data, err: _err };
    
}
function _collectElements(eles) {
    var _err = '';
    var _data = [];
    for (var i = 0; i < eles.length; i++) {
        if (_getAttribute(eles[i], 'requiredfield') && (eles[i].value=='-1' || eles[i].value.length==0)){
            _err += (_getAttribute(eles[i], 'errmsg') + '\n');
        } else {
            _data.push([_getAttribute(eles[i], 'name'), eles[i].value]);        
        }
    }
    return { data: _data, err: _err };
}
function _collectRadios(eles) {
    var _err = '';
    var _data = [];
    for (var i = 0; i < eles.length; i++) {
        if (eles[i].checked) {
            var _name = _getAttribute(eles[i], 'name');
            _data.push([_name, eles[i].value]);
        }
    }
    return { data: _data, err: _err };
}
function _collectCheckboxes(eles) {
    var _err = '';
    var _data = [];
    var _names = [];
    for (var i = 0; i < eles.length; i++) {
        if (eles[i].checked) {
            _data.push([_getAttribute(eles[i], 'name'), eles[i].value]);
            /*
            var _name = _getAttribute(eles[i], 'name');
            if (_name) {
                var _existed = false;
                var _index = false;
                _name = _name.toLowerCase();
                for (var j = 0; j < _names.length; j++) {
                    if (_names[j] == _name) {
                        _existed = true;
                        _index = j;
                        break;
                    }
                }
                if (_existed) {
                    var _item = _data[_index];
                    _item[1]+=(';'+encodeURIComponent(eles[i].value));
                } else {
                    _names.push(_name.toLowerCase());
                    _data.push([_name.toLowerCase(), eles[i].value]);
                }
            } 
            */           
        }
    }
    return { data: _data, err: _err };
}
function doSubmit(formId) {
    _collectData(formId);
}
