(function($){$.fn.formset=function(opts)
{var options=$.extend({},$.fn.formset.defaults,opts);var updateElementIndex=function(el,prefix,ndx){var id_regex=new RegExp('('+prefix+'-\\d+)');var replacement=prefix+'-'+ndx;if($(el).attr("for"))$(el).attr("for",$(el).attr("for").replace(id_regex,replacement));if(el.id)el.id=el.id.replace(id_regex,replacement);if(el.name)el.name=el.name.replace(id_regex,replacement);};$(this).each(function(i){$(this).addClass('dynamic-form');if($(this).attr('tagName')=='TR'){$(this).children(':last').append('<a class="'+options.deleteCssClass+'" href="javascript:void(0)">'+options.deleteText+'</a>');}else{$(this).append('<a class="'+options.deleteCssClass+'" href="javascript:void(0)">'+options.deleteText+'</a>');}
$(this).find('a.'+options.deleteCssClass).click(function(){var row=$(this).parents('.dynamic-form');row.remove();if(options.removed)options.removed(row);var forms=$('.dynamic-form');$('#id_'+options.prefix+'-TOTAL_FORMS').val(forms.length);if(forms.length==1){$('a.'+options.deleteCssClass).hide();}
for(var i=0,formCount=forms.length;i<formCount;i++){$(forms.get(i)).find('input,select,textarea,label').each(function(){updateElementIndex(this,options.prefix,i);});}
return false;});});if($(this).length){if($(this).attr('tagName')=='TR'){var numCols=this.eq(0).children().length;$(this).parent().append('<tr><td colspan="'+numCols+'"><a class="'+options.addCssClass+'" href="javascript:void(0)">'+options.addText+'</a></tr>');}else{$(this).filter(':last').after('<a class="'+options.addCssClass+'" href="javascript:void(0)">'+options.addText+'</a>');}
$(this).parent().find('a.'+options.addCssClass).click(function(){var nextIndex=parseInt($('#id_'+options.prefix+'-TOTAL_FORMS').val());var row=$('.dynamic-form:first').clone(true).get(0);$(row).removeAttr('id').insertAfter($('.dynamic-form:last'));$(row).find('input,select,textarea,label').each(function(){updateElementIndex(this,options.prefix,nextIndex);$(this).val('');});var formCount=nextIndex+1;$('#id_'+options.prefix+'-TOTAL_FORMS').val(formCount);if(formCount>1){$('a.'+options.deleteCssClass).show();}
if(options.added)options.added($(row));return false;});}
if($(this).length==1){$('a.'+options.deleteCssClass).hide();}
return $(this);}
$.fn.formset.defaults={prefix:'form',addText:'add another',deleteText:'remove',addCssClass:'add-row',deleteCssClass:'delete-row',added:null,removed:null}})(jQuery)

