(function($) {
	$.fn.dmsSortOn= function(){
		//alert("got here");
		return $(this).not(".dms-sorton-inited")
					.each(function(){
						var $this= $(this).addClass("dms-sorton-inited");
						var parts= $this.attr("name").split("__");
						var i= parseInt(parts[1]);
						//alert("i="+$this.attr("name"));
						var rowClass= "dms-sorton-i-"+i.toString();
						$this.addClass(rowClass)
							.next().addClass(rowClass)
							.prev().prev().addClass(rowClass);
						if(i==0){
							$this.next().after("&nbsp;<a href='#'>+</a>");
							$this.next().next().data("dms-sorton-i",i)
								.bind("click.sorton-add",function(){
									var $last= 	$(this).parents("fieldset").find(".dms-sorton-inited:last");
									var next= parseInt($last.next().next().data("dms-sorton-i"))+1;
									var html= $(this).parent().html();
									while(html.indexOf("__0")!==-1){
										html= html.replace("__0","__"+next.toString());
									}
									//alert(html);
									$last.parent().after("<div class='div_input'>"+html+"</div>");
									var $lbl= $last.parent().next().children(":first").text("then by:");
									$lbl.next().next().next().remove();
									$lbl.next().removeClass("dms-sorton-inited").val(0).dmsSortOn();
								});
						} else {
							$this.next().after("&nbsp;<a href='#'>x</a>");
							$this.next().next().data("dms-sorton-i",i)
								.bind("click.sorton-remove",function(){
									$(this).parent().remove();
								});
						}
					}).end();
	}
	
	
	$.fn.dmsThCb = function(options) {
 		if(!options) options={};
		if(typeof options=="object"){
			var arg='init';
			
		} else if(typeof options=="string"){
			var arg= options;
			options={};
		}
		
		switch(arg){
			case "init":
				 // build main options before element iteration
				var opts = $.extend({}, $.fn.dmsThCb.defaults, options);
			
				 // iterate and reformat each matched element
				return $(this)
					.not("."+opts.initedClass)
					.each(function() {
						$this = $(this);
						var checked=false;
						var i= $(this).prevAll().size();
						
						$this.addClass("dms-th-cb")
							.append('<input type="checkbox" class="dms-th-cb">')
						/*
							.parents("tr.titlerow").nextAll().each(function(){													
										if(!$(this).find("td").eq(i).css({'background':'blue'}).children(":checkbox").attr("checked")) checked=false;
										})
						//alert('checked='+checked);
						*/
						$this.children(".dms-th-cb").attr("checked",checked)
							.bind("click.dms-th-cb",function(e){
									var i= $(this).parents("th").prevAll().size();
									var $cb= $(this);
									//alert("i="+i);
									$(this).parents("tr.titlerow").nextAll().each(function(){													
										$(this).find("td").eq(i)//.append($(this).find("td").eq(i).attr("class"))
											.children(":checkbox").attr("checked",$cb.attr("checked"))
												.each(function(){ 
														if($(this).attr("defaultChecked")!=$(this).attr("checked")){ 
															$(this).parents(".xblok:first").addClass("changed");
														} else {
															$(this).parents(".xblok:first").removeClass("changed");
														}
													});
										});
								});
							
					})
					.end()
			break;
			case "destroy":
				return $(this).each(function(e){
						$(this).removeClass("dms-th-cb").find(":checkbox.dms-th-cb").remove();				 
					})
			break;
		} 
	};
	
	$.fn.dmsThCb.defaults= {
			initedClass:'th-cb-control-inited'
		};
	
	
})(jQuery);
