/**
 *
 * @author SoNgS,MSN:songs_2008@hotmail.com,QQ:79648914,Email:ss423@163.com
 * @copyright 2008|++
 * @version 1.0
 * 
 */
 
<!--
String.prototype.trim = function() {
	return this.replace(/(^\s+)|(\s+$)/g,'');
}

function Form() {
	this.form = null;
	this.container = [];
	this.error_no = [];
};

Form.prototype.include = function(path) {
	var head = document.getElementsByTagName("head")[0];
	var script = document.createElement("script");
	script.src = path;
	head.appendChild(script);
}

Form.prototype.getText = function(_tag) {
	this.form[_tag].value = this.form[_tag].value.trim();
	return this.form[_tag].value;
}

Form.prototype.setText = function(_tag,_value) {
	this.form[_tag].value = _value;
}

Form.prototype.getSelect = function(_tag) {
	return this.form[_tag].value;
}

Form.prototype.getRadio = function(_tag) {
	var _num = this.form[_tag].length;
	for (var i = 0; i < _num; i++) {
		if (this.form[_tag][i].checked) {
			return this.form[_tag][i].value;
		}
	}
}

Form.prototype.getCheckbox = function(_tag) {
	var _result = [];
	
	_tag += '[]';
	var _num = this.form[_tag].length;
	for (var i = 0; i < _num; i++) {
		if (this.form[_tag][i].checked) {
			//_result[_result.length] = this.form[_tag][i].value;
			_result.push(this.form[_tag][i].value);
		}
	}
	
	return _result;
}

Form.prototype.setSelect = function(_tag,_value) {
	var _options = this.form[_tag].options;
	var _num = _options.length;
	for (var i = 0; i < _num; i++) {
		if (_options[i].value == _value) {
			_options[i].selected = true;
		}
	}
}

Form.prototype.setRadio = function(_tag,_value) {
	if (_value == '') {
		return;
	}
	
	var _num = this.form[_tag].length;
	for (var i = 0; i < _num; i++) {
		this.form[_tag][i].checked = false;
		if (this.form[_tag][i].value == _value) {
			this.form[_tag][i].checked = true;
		}
	}
}

Form.prototype.setCheckbox = function(_tag,_arr) {
	_tag += '[]';
	var _num = this.form[_tag].length;
	for (var i = 0; i < _num; i++) {
		if (this.inArray(this.form[_tag][i].value,_arr)) {
			this.form[_tag][i].checked = true;
		}
	}
}

Form.prototype.echoOptions = function(_tag,_from,_to,_default) {
	for (var i = _from; i <= _to; i++) {
		var _length = this.form[_tag].options.length;
		this.form[_tag].options[_length] = new Option(i,i);
		if (i == _default) {
			this.form[_tag].options[_length].selected = true;
		}
	}
}

Form.prototype.hiddenAll = function() {
	var _num = this.container.length;
	for (var i = 0; i < _num; i++) {
		try {
			document.getElementById('error_' + this.container[i][0]).style.display = 'none';
		} catch(e) {
			alert('error_' + this.container[i][0] + ' can not be found');
		}
	}
}

Form.prototype.writeErr = function(_str,_tag) {
	this.setContainer(_tag);
	
	try {
		document.getElementById('error_' + _tag).style.display = '';
	} catch(e) {
		alert('error_' + _tag + ' not be found');
	}
	
	this.writeMsg(_str,'msg_' + _tag);
}

Form.prototype.writeMsg = function(_str,_tag) {
	try {
		document.getElementById(_tag).innerHTML = _str;
	} catch(e) {
		alert(_tag + ' not be found');
	}
}

Form.prototype.setContainer = function(_id) {
	var _page = this.page;
	var _obj = [_id,_page];
	if (!this.inArray(_obj,this.container)) {
		//this.container[this.container.length] = [_id,_page];
		this.container.push(_obj);
	}
}

Form.prototype.setErrorNo = function(_err) {
	if (!this.inArray(_err,this.error_no)) {
		//this.error_no[this.error_no.length] = _err;
		this.error_no.push(_err);
	}
}

Form.prototype.inArray = function(_mix,_array) {
	var _num = _array.length;
	for (var i = 0; i < _num; i++) {
		if (_array[i] == _mix) {
			return true;
		}
	}
	
	return false;
}

Form.prototype.get_ajax = function() {
	try { return new ActiveXObject("Msxml2.XMLHTTP");  } catch(e) {} //IE
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
	try { return new XMLHttpRequest();          } catch(e) {} //Native Javascript
	
	return null;
}
	
Form.prototype.getXML = function(_url) {
	var _ajax = this.get_ajax();
	if (!_ajax) {
		return '';
	}
	
	var _html = '';
	
	try {
		_ajax.open("GET",_url,false);
		_ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
		_ajax.send(null);
		if (_ajax.readyState == 4 && _ajax.status == 200) {
			_html = _ajax.responseText;
		}
	} catch(e) {}
	
	return _html;
}

Form.prototype.str2int = function(_str) {
	return parseInt(_str,10);
}

Form.prototype.trim = function(_str) {
	return _str.replace(/(^\s+)|(\s+$)/g,'');
}


/* form validation funtion begin */
Form.prototype.isEmail = function(_str) {
	var _pattern = /^([\w\.-]{1,31})@([\w-]+(\.[\w-]+)+)$/;
	return _pattern.test(_str);
}

Form.prototype.isUsername = function(_str) {
	var _pattern = /^[a-zA-Z][\w\.\-]{3,11}$/;
	return _pattern.test(_str);
}

Form.prototype.isDomain = function(_str) {
	var _pattern = /^[\w-]+(\.[\w-]+)+$/;
	return _pattern.test(_str);
}

Form.prototype.isPassword = function(_str) {
	var _pattern = /^[\w\.\-]{6,32}$/;
	return _pattern.test(_str);
}

Form.prototype.isCheckcode = function(_str) {
	var _pattern = /^[a-zA-Z0-9]{6}$/;
	return _pattern.test(_str);
}

Form.prototype.isTelephone = function(_str) {
	var _pattern = /^\+?(\d{3,4})+\d{8}$/;
	return _pattern.test(_str);
}

Form.prototype.isLinePhone = function(_str) {
	var _pattern = /^\d{3,4}\-\d{7,8}$/;
	return _pattern.test(_str);
}

Form.prototype.isMobilePhone = function(_str) {
	var _pattern = /^(\(\d{3,4}\))?\d{7,}$/;
	return _pattern.test(_str);
}

Form.prototype.isContact = function(_str) {
	var _pattern = /^\+?\d{3,}(\-\d+)*([, \-，]\+?\d{3,}(\-\d+)*)*$/;
	return _pattern.test(_str);
}

Form.prototype.isPostalCode = function(_str) {
	var _pattern = /^\d{6}$/;
	return _pattern.test(_str);
}

Form.prototype.isIdType = function(_idtype) {
	if (_idtype.perSame()) {
		return false;
	}
	
	if (_idtype.perOrder()) {
		return false;
	}
	
	if (_idtype.length != 18) {
		return false;
	}
	
	var now = new Date();
	var birthday = _idtype.substring(6,14);
	var birth_year = Number(birthday.substring(0,4));
	
	if (birth_year < 1900 || birth_year > now.getFullYear()) {
		return false;
	}
	
	var birth_month = Number(birthday.substring(4,6));
	if (birth_month <= 0 || birth_month > 12) {
		return false;
	}
	
	var birth_day = Number(birthday.substring(6,8));
	if (birth_day <= 0 || birth_day > 31) {
		return false;
	}
	
	return true;
}

Form.prototype.isDate = function(_str) {
	var _pat = /^\d{4}\-\d{1,2}\-\d{1,2}( \d{1,2}:\d{1,2}(:\d{1,2})?)?$/;
	return _pat.test(_str);
}
//-->
