$.ajaxSetup({
    contentType: "application/json; charset=utf-8",
    type: "POST",
    dataType: "json",
    data: "{}"
});


//extend jQuery;
jQuery.extend({
    toStr: function(obj) {
        if (obj == null)
            return '""';
        var str = obj;
        if (typeof obj === "string")
            str = '"' + obj + '"';
        if ($.isPlainObject(obj)) {
            str = $._parseJson(obj);
        }
        if ($.isArray(obj)) {
            str = $._parseArray(obj);
        }
        return str;
    }
    , _parseJson: function(obj) {
        var str = obj;
        if ($.isPlainObject(obj)) {
            str = "{";
            $.each(obj, function(index, ele) {
                str += '"' + index + '":' + $.toStr(ele) + ',';
            });
            str = str.substr(0, str.length - 1) + "}";
        }
        return str;
    }
    , _parseArray: function(arr) {
        var str = arr;
        if ($.isArray(arr)) {
            str = "["
            var len = arr.length;
            for (var i = 0; i < len; i++) {
                str += $.toStr(arr[i]) + ',';
            }
            str = str.substr(0, str.length - 1);
            str += "]";
        }
        return str;
    }
    , post: function(url, data, callback, type) {
        // shift arguments if data argument was omited
        if (jQuery.isFunction(data)) {
            type = type || callback;
            callback = data;
            //data = {};
            //roney edit for webmethod.
            data = "{}";
        }
        return jQuery.ajax({
            type: "POST",
            url: url,
            data: data,
            success: callback,
            dataType: type
        });
    }
});
jQuery.fn.extend({
    invisible: function() { $(this).css("visibility", "hidden"); return $(this); }
    , visible: function() { $(this).css("visibility", "visible"); return $(this); }
    // , fadeIn: function() { }
    , rLoad: function(url, params, callback) {
        if (typeof url !== "string") {
            return _load.call(this, url);
        } else if (!this.length) {
            return this;
        }
        var off = url.indexOf(" ");
        if (off >= 0) {
            var selector = url.slice(off, url.length);
            url = url.slice(0, off);
        }
        var type = "POST";
        if (params) {
            if (jQuery.isFunction(params)) {
                callback = params;
                params = null;
            } else if (typeof params === "object") {
                params = $.toStr(params);
            }
        } else
            params = "{}";
        var self = this;
        jQuery.ajax({
            url: url,
            type: type,
            dataType: "html",
            data: params,
            complete: function(res, status) {
                if (status === "success" || status === "notmodified") {
                    self.html(selector ?
					jQuery("<div />")
						.append(res.responseText.replace(rscript, ""))
						.find(selector) :
					res.responseText);
                }
                if (callback) {
                    self.each(callback, [res.responseText, status, res]);
                }
            }
        });
        return this;
    }
});
String.prototype.getBytes = function() {
    var text = this.replace(/[^\x00-\xff]/g, "**");
    return text.length;
}
String.prototype.subBytes = function(start, len) {
    var tempstr = this;
    var i = 0;
    for (var z = start; z < len; z++) {
        if (tempstr.charCodeAt(z) > 255) {
            i = i + 2;
        } else {
            i = i + 1;
        }
        if (i >= len) {
            tempstr = tempstr.slice(start, (z + 1));
            break;
        }
    }
    return tempstr;
}
Array.prototype.toStr = function() {
    var cstr = "";
    var len = this.length;
    for (var i = 0; i < len; i++) {
        //var item = ctn[i] ? ctn[i] : "";
        cstr += this[i] + ",";
    }
    cstr = cstr.substr(0, cstr.length - 1)
    return cstr;
}

//jQuery.extend($.validator.prototype, {
//    hideErrors: function() {
//        this.settings.hideErrors
//				? this.settings.hideErrors.call(this, this.errorMap, this.errorList)
//				: this.addWrapper(this.toHide).hide();
//    }
//});