if(typeof(jslib.ajax.form) == 'undefined'){
	jslib.namespace("jslib.ajax.form");
	jslib.ajax.form.__get_item_value =  function(o){
		if(o.disabled || !o.name)return null;
		if(o.type == 'reset' || o.type == 'image')return null;
		if(o.type == 'checkbox' || o.type == 'radio'){
			if(!o.checked)return null;
		}
		if(o.tagName == 'SELECT'){
			var values = [];
			for(var i=0; i<o.options.length; i++){
				if(o.options[i].selected){
					values.push(encodeURIComponent(o.name) + '=' + encodeURIComponent(o.options[i].value));
				}
			}
			if(values.length > 0)return values.join('&');
			return null;
		}
		return encodeURIComponent(o.name) + '=' + encodeURIComponent(o.value);
	}
	jslib.ajax.form.submit = function(form, completed, error) {
	    var form = jslib.$(form);
	    if (form) {
	        var values = [];
	        for (var i = 0; i < form.elements.length; i++) {
	            var v = jslib.ajax.form.__get_item_value(form.elements[i]);
	            if (v != null) values.push(v);
	        }
	        var data = values.join('&');
	        var action = form.attributes["action"] == null ? '' : form.attributes["action"].nodeValue;
	        var url = action || self.location.href;
	        if (url == '?') url = self.location.href;
	        var method = form.attributes["method"] == null ? 'POST' : form.attributes["method"].nodeValue;
	        if (method.toUpperCase() == "GET") {
	            if (url.indexOf('?') != -1) {
	                url += '&';
	            } else {
	                url += '?';
	            }
	            url += data;
	            data = null;
	        }
	        jslib.ajax.load({ url: url, method: method, data: data, contentType: 'application/x-www-form-urlencoded' }, completed, error);
	    }
	    return false;
	}
}
