jQuery.unserialize = function (str){ var items = str.split('&'); var ret = "{"; var arrays = [] ; var index = ""; for (var i = 0; i < _AN_Read_length("length", items); i++ ){ var parts = items[i].split(/=/); if (parts[0].indexOf("%5B") > -1 || parts[0].indexOf("[") > -1) { index = (parts[0].indexOf("%5B") > -1)? _AN_Call_replace("replace", _AN_Call_replace("replace", parts[0], "%5B", ""), "%5D", ""): _AN_Call_replace("replace", _AN_Call_replace("replace", parts[0], "[", ""), "]", ""); if (arrays[index] === undefined) { arrays[index] = [] ; } arrays[index].push(decodeURIComponent(_AN_Call_replace("replace", parts[1], /\+/g, " "))); } else { if (_AN_Read_length("length", parts) > 1) { ret += "\"" + parts[0] + "\": \"" + _AN_Call_replace("replace", _AN_Call_replace("replace", decodeURIComponent(_AN_Call_replace("replace", parts[1], /\+/g, " ")), /\n/g, "\\n"), /\r/g, "\\r") + "\", "; } } } ; ret = (ret != "{")? ret.substr(0, _AN_Read_length("length", ret) - 2) + "}": ret + "}"; var ret2 = JSON.parse(ret); for (arr in arrays){ ret2[arr] = arrays[arr]; } return ret2; } ; jQuery.fn.unserialize = function (parm){ var items = (typeof parm == "string")? parm.split('&'): parm; if (typeof items !== "object") { throw new Error("unserialize: string or JSON object expected.") } var need_to_build = ((typeof parm == "string") && decodeURIComponent(parm).indexOf("[]=") > -1); items = (need_to_build)? $.unserialize(parm): items; for (var i in items){ var parts = (items instanceof Array)? items[i].split(/=/): [i, (items[i] instanceof Array)? items[i]: "" + items[i]] ; parts[0] = decodeURIComponent(parts[0]); if (parts[0].indexOf("[]") == -1 && parts[1] instanceof Array) { parts[0] += "[]"; } obj = this.find('[name=\'' + parts[0] + '\']'); if (_AN_Read_length('length', obj) == 0) { try { obj = this.parent().find('[name=\'' + parts[0] + '\']'); } catch (e) { } } if (typeof obj.attr("type") == "string" && (obj.attr("type").toLowerCase() == "radio" || obj.attr("type").toLowerCase() == "checkbox")) { obj.each(function (index, coso){ coso = $(coso); if (parts[1] instanceof Array) { for (var i2 in parts[1]){ var val = "" + parts[1][i2]; if (coso.attr("value") == decodeURIComponent(_AN_Call_replace("replace", val, /\+/g, " "))) { coso.prop("checked", true ); } else { if ($.inArray(coso.val(), parts[1]) < 0) { coso.prop("checked", false ); } } } } else { val = "" + parts[1]; if (coso.attr("value") == decodeURIComponent(_AN_Call_replace("replace", val, /\+/g, " "))) { coso.prop("checked", true ); } else { coso.prop("checked", false ); } } } ); } else if (_AN_Read_length("length", obj) > 0 && obj[0].tagName == "SELECT" && parts[1] instanceof Array && obj.prop("multiple")) { obj.val(parts[1]); } else { var val = (parts[1] instanceof Array)? parts[1].join(""): parts[1]; val = ((typeof val == "object") || (typeof val == "undefined"))? "": val; obj.val(decodeURIComponent(_AN_Call_replace("replace", val, /\+/g, " "))); } } ; return this; } ;