
(function($){var V=$.values={version:"1.3.1",defaults:{copyToData:false,useSelectValue:false,onlyNest:false,nodeFilter:undefined,setEvents:false,setAllEvent:false,onlyFlat:false,noClone:false,uncheckedValue:undefined,keyAttr:'name',copyToAttr:false,includeCounts:false},isOptions:function(o){if(o!==null&&typeof o=="object"){for(var i in V.defaults)
if(o[i]!==undefined)
return true;}
return false;},setAll:function(values,opts){if($.isArray(values)&&values.length>0){return V.setArrayToAll.call(this,values,opts);}
for(var i in values){V.setOne.call(this,i,values[i],opts);}
if(opts.copyToData){this.data('values',values);}
if(opts.setAllEvent){this.trigger('setAll.values',values);}
return this;},setArrayToAll:function(values,opts){var m=values.length,n=this.size(),last;if(n>0&&m>0){last=V.setAll.call($(this[0]),values[0],opts);if(m>1){var i,tgt;for(i=1;i<m&&(i<n||!opts.noClone);i++){tgt=i<n?$(this[i]):last.clone(true);V.setAll.call(tgt,values[i],opts);if(i>=n){last.after(tgt);this.add(tgt);last=tgt;}}}}
return this;},setOne:function(key,value,opts){var selector='['+opts.keyAttr+'='+key+']',$fields=this.find(selector);if(this.is(selector)){$fields=$fields.add(this);}
if(opts.nodeFilter){$fields=$fields.filter(opts.nodeFilter);}
if(opts.copyToData){this.data(key,value);}
if(opts.copyToAttr){this.attr(key,value);}
var work=V.createWorkspace($fields,key,value,opts);work.fields.each(function(){V.setValue.call(this,work,opts);});},createWorkspace:function($fields,key,value,opts){var work={fields:$fields,fieldCount:$fields.size(),key:key,index:0};if($.isArray(value)&&value.length>0){work.values=value;for(var i=0,m=value.length;i<m;i++){if(value[i]!==null){if(work.value!==undefined){if(work.fieldCount==1){V.manyValuesOneField(work,value,$fields,opts);}
break;}
work.value=value[i];}}}else{work.value=value;if(typeof value=="string"&&value.indexOf(',')>=0){work.split=true;work.values=value.split(',');}}
return work;},manyValuesOneField:function(work,values,$field,opts){if(opts.noClone||$field.children().length===0){work.value=typeof values[0]=="object"?values[0]:values.toString();}else{work.value=values;}},setValue:function(work,opts){var setter=typeof work.value=="object"?V.set.nested:V.set[this.nodeName.toLowerCase()]||V.set.standard;setter.call(this,work,opts);if(opts.setEvents){$(this).trigger('set.values',[work.key,work.value,work]);}
if(work.fieldCount>1){work.index++;if(work.values&&!work.split){work.value=work.values[work.index];}}},set:{nested:function(work,opts){if(opts.onlyFlat){work.value=work.value.toString();V.setValue.call(this,work,opts);}else{$(this).values(work.value,opts);}},standard:function(work,opts){var v=work.value,i,$f=$(this);if(v==null){v='';}
if($f.attr('value')!=undefined){$f.attr('value',v);}else if(typeof v=="string"&&(i=v.indexOf('<'))>=0&&v.indexOf('>')>i){$f.html(v);}else{$f.text(v);}},input:function(work,opts){var type=this.type.toLowerCase();if(type=='checkbox'||type=='radio'){this.checked=(this.value==work.value);if(!this.checked&&work.values){this.checked=false;var has=this.value,vals=work.values;for(var i=0,m=vals.length;i<m;i++){if(has==vals[i]){this.checked=true;break;}}}}else{this.value=work.value;}},select:function(work,opts){var mult=(this.type!="select-one"&&work.values!==undefined),options=this.options,useTxt=!opts.useSelectValue;for(var i=0,m=options.length;i<m;i++){var option=options[i],has=(useTxt?$.trim(option.text):$(option).val());if(mult){option.selected=false;for(var j=0,n=work.values.length;j<n;j++){if(has==work.values[j]){option.selected=true;break;}}}else{option.selected=has==work.value;}}},textarea:function(work,opts){this.value=work.value;},form:function(work,opts){$(this).attr('action',work.value);},iframe:function(work,opts){this.url=work.value;},img:function(work,opts){$(this).attr('src',work.value);},embed:function(work,opts){$(this).attr('src',work.value);}},getAll:function(opts){var selector='['+opts.keyAttr+']',$fields=this.find(selector),vals={},counts={};if(this.is(selector)){$fields=$fields.add(this);}
if(opts.nodeFilter){$fields=$fields.filter(opts.nodeFilter);}
$fields.each(function(){var key=$(this).attr(opts.keyAttr);if(key&&key!=''&&!vals[key]){vals[key]=key;counts[key]=0;}});for(var key in vals){var got=V.getOne.call(this,key,opts,$fields);vals[key]=got.val;counts[key]=got.count;}
if(opts.includeCounts){vals.valuesCounts=counts;}
if(opts.onlyNest){V.deepClean(vals,opts);}
return vals;},deepClean:function(vals,opts,parents){var k,v,p,skip=opts.includeCounts?'valuesCounts':null;for(k in vals){if(k!=skip&&typeof(v=vals[k])=="object"){if(!p){p=parents?parents.concat([vals]):[vals];}
V.deepClean(v,opts,p);}
if(parents){for(var i=0,m=parents.length;i<m;i++)
delete parents[i][k];}}},getOne:function(key,opts,$fields){var selector='['+opts.keyAttr+'='+key+']',results=[],result,same=true;if($fields===undefined){$fields=this.find(selector);if(this.is(selector)){$fields=$fields.add(this);}
if(opts.nodeFilter){$fields=$fields.filter(opts.nodeFilter);}}else{$fields=$fields.filter(selector);}
$fields.each(function(){var val=V.getValue.call(this,opts);if(val!==undefined){if(result!==undefined&&result!=val){same=false;}
result=val;results.push(result);}});if(same){if(result===undefined){result=null;}
return{count:results.length,val:result};}
return{count:results.length,val:results};},getValue:function(opts){return(V.get[this.nodeName.toLowerCase()]||V.get.standard).call(this,opts);},get:{standard:function(opts){var $field=$(this),val=$field.val();if(val===undefined||val===null||val==''){if((val=$field.attr('value'))!=undefined){return val==''?undefined:val;}else{if(!opts.onlyFlat){var $kids=$field.children();if($kids.size()>0){val=$kids.values(opts);if(hasProps(val)){return val;}}}
val=$.trim($field.text());if(val==''){val=$field.html();}}}
return val;},input:function(opts){if(opts.uncheckedValue!==true&&(this.type=='checkbox'||this.type=='radio')&&!this.checked){return opts.uncheckedValue;}
return this.value;},select:function(opts){var $field=$(this),$selected=$field.find('option:selected');if($selected.size()==0){return null;}
var one=$selected.size()==1,val=one?null:[];$selected.each(function(){var v=opts.useSelectValue?this.value:$.trim($(this).text());if(one){val=v;}else{val.push(v);}});return val;},form:function(opts){if(!opts.one){var vals=$(this).children().values(opts);if(hasProps(vals)){return vals;}}
return $(this).attr('action');},iframe:function(opts){return this.url;},img:function(opts){return $(this).attr('src');},embed:function(opts){return $(this).attr('src');}}};$.fn.values=function(a,b,c){var opts=$.extend({},V.defaults);if(c){opts=$.extend(opts,c);}else if(V.isOptions(b)){opts=$.extend(opts,b);b=undefined;}else if(V.isOptions(a)){opts=$.extend(opts,a);a=undefined;}
if(!a){return V.getAll.call(this,opts);}
if(typeof a=="string"){opts.one=true;if(b===undefined){return V.getOne.call(this,a,opts).val;}
V.setOne.call(this,a,b,opts);return this;}
if(a.nodeType){a=$(a);}
if(a.jquery){a=V.getAll.call(a,opts);}
V.setAll.call(this,a,opts);return this;};function hasProps(o){for(i in o)return true;}})(jQuery);