$.fn.deserialize=function(d,config){var data=d;me=this;if(d===undefined){return me;}
config=$.extend({isPHPnaming:false,overwrite:true},config);if(d.constructor==Array){data={};for(var i=0;i<d.length;i++){if(typeof data[d[i].name]!='undefined'){if(data[d[i].name].constructor!=Array){data[d[i].name]=[data[d[i].name],d[i].value];}else{data[d[i].name].push(d[i].value);}}else{data[d[i].name]=d[i].value;}}}
$('input,select,textarea',me)
.each(function(){var p=this.name;var v=[];if(config.isPHPnaming){p=p.replace(/\[\]$/,'');}
if(p&&data[p]!=undefined){v=data[p].constructor==Array?data[p]:[data[p]];}
if(config.overwrite===true||data[p]){switch(this.type||this.tagName.toLowerCase()){case"radio":case"checkbox":this.checked=false;for(var i=0;i<v.length;i++){this.checked|=(this.value!=''&&v[i]==this.value);}
break;case"select-multiple"||"select":for(i=0;i<this.options.length;i++){this.options[i].selected=false;for(var j=0;j<v.length;j++){this.options[i].selected|=(this.options[i].value!=''&&this.options[i].value==v[j]);}}
break;case"button":case"submit":this.value=v.length>0?v.join(','):this.value;break;default:this.value=v.join(',');}}});return me;};
