(function($){$.fn.ccopy=function(id,options){debug(this);var defaults={useCounter:true,copyClass:'ccopy',removeClass:'removeccopy',removeText:'Remove Last Entry'};var opts=$.extend(defaults,options);$this=$(this);var nolabel=true;var o=($.meta)?$.extend({},opts,$this.data()):opts;var counter=$('#'+id).length;if(counter<=1){var newid=id+"_"+counter;var name=$('#'+id).attr("name");if(o.useCounter){$('#'+id).attr("name",id+"_"+counter);var hiddenCounter='<input type="hidden" name="'+id+'_counter" id="'+id+'_counter" value="'+counter+'"/>';$(this).after(hiddenCounter)}else{$('#'+id).attr("name",name+"[]")}$('#'+id).attr("id",newid);var newclass=id+'_'+o.copyClass;$('#'+newid).addClass(newclass);if($("label[for='"+id+"']").text()){var labeltxt=$("label[for='"+id+"']").text();$("label[for='"+id+"']").text(labeltxt+' '+counter);$("label[for='"+id+"']").attr('for',id+"_"+counter);nolabel=false}var removeclass=$(this).attr("class");var removeid=$(this).attr("id");var isbutton=$("#"+removeid+":button").length;makeme=$(this).clone();makeme.addClass(removeid+"_"+o.removeClass);makeme.attr("id",removeid+"_"+o.removeClass);if(isbutton<1){makeme.html(o.removeText)}else{makeme.val(o.removeText)}makeme.insertAfter($(this));makeme.bind("click.killme",function(){var count=$('.'+newclass).length;if(count>1){var removeclone=id+"_"+count;if(!nolabel){$("label[for='"+removeclone+"']").remove()}$("#"+removeclone).remove();var prev=count-1;if(o.useCounter){$('#'+id+'_counter').val(prev)}$("#"+id+"_"+prev).focus()}});$this.data("linkedTo",{current:newid});return this.each(function(){$this.click(function(){var total=$('.'+newclass).length;var current=total;var next=total+1;var cloned=id+"_"+current;var clone=id+"_"+next;if(!nolabel){var newlabel=labeltxt+" "+next;$("label[for='"+cloned+"']").clone(true).attr('for',clone).html(newlabel).insertAfter($('#'+cloned))}addme=$('#'+cloned).clone(true);addme.attr('id',clone);if(o.useCounter){addme.attr('name',clone);$('#'+id+'_counter').val(next)}addme.val('');addme.insertAfter((nolabel)?$('#'+id+"_"+current):$("label[for='"+clone+"']"));$this.data("linkedTo",{current:clone});$('#'+clone).focus()})})}else{alert("You have duplicate ids within your page.\nNot only will ccopy fail, it will invalidate your xhtml...")}};function debug($obj){if(window.console&&window.console.log){window.console.log('ccopy count: '+$obj.size())}}$.fn.ccopy.set=function(id,val){var linkedId=$("#"+id).data("linkedTo").current;$("#"+linkedId).val(val)};$.fn.ccopy.multiset=function(id,valArray){for(i=0;i<valArray.length;i++){if(i>0){$("#"+id).click()}$.fn.ccopy.set(id,valArray[i])}}})(jQuery);