function initXbukkets(tip,disable){	
	if(isa("xbukket",tip)) initXbukket(tip,disable);
	$("#"+tip[0].id+" .xbukket").each(function(e){ initXbukket(this,disable); });
}

function initXbukket(xbukket,disable,mode){
	$(xbukket).unbind();
	$(xbukket).filter(".xk_table_pag").find("tbody:first").children('tr:odd:not(.titlerow)').removeClass("odd").addClass("even");
	$(xbukket).filter(".xk_table_pag").find("tbody:first").children('tr:even:not(.titlerow)').removeClass("even").addClass("odd");
	if(disable) {
		$(xbukket).addClass('ui-state-disabled');
		return false;
	} else {
		$(xbukket).removeClass('ui-state-disabled');
	}
	if(!mode) mode=appMode;
	switch(mode){
		case "IXMAP":
			$(xbukket).hover(
				function(){ $(this).addClass("hover"); },
				function(){	$(this).removeClass("hover"); }
			);
			$(xbukket).click(function(e){ xbukketClick(e,this); });
		break;
		case "EDIT":
			var edtlvl= _val(xbukket,"edtlvl");
			if(edtlvl=="mx"){
				//alert(edtlvl);
				$(xbukket).hover(
					function(){ $(this).addClass("hover"); },
					function(){	$(this).removeClass("hover"); }
				);
				$(xbukket).click(function(e){ xbukketClick(e,this); });
			}
		break;
	}
}

function xbukketClick(e,xbukket){
	var loc=0;
	if(xbukket){
		loc = _val(xbukket,'loc');
	}
	
	//alert('loc='+loc);
	switch(appMode){
		case "IXMAP":
			if(e) stopDef(e);
			var frm = "frm_ixmap";
			if(xbukket){
				var tar = _xbkt(xbukket,"tar");
				$('#frm_ixmap :input[name=tar]').val(tar);
			}
			//alert("locid size="+locid.size()+"\nloctag size="+loctag.size()+"\nixloc size="+ixloc.size());
			//$('#frm_ixmap select:not([id*=ROW])').each(function(e){alert(this.name);});
			
			var locid = $('#frm_ixmap :select[name=locid]');
			var v1 = _val(locid,"v1");
			if(v1){
				$(locid).removeClass('v1:'+v1);
				$(locid).addClass('v1:'+loc);
				$(locid).append("<option value='"+loc+"' selected>"+loc+"</option>");
				$(locid).val(loc);
			}
			
			var dia = $('#dia_'+frm);
			mfButtons_(dia,"SC");
			dia.dialog('open');
			break;
		case "EDIT":
			//stopDef(e);
			//alert(xbukket.id);
			xbukket = $(xbukket);
			if(xbukket.hasClass("xblok")) xbukket = xbukket.parents(".xbukket:first");
			var frmid = 'frm_mx-'+_val(xbukket,"lyt")+'-'+_val(xbukket,'loc');
			$('#'+frmid+' [name=tar]').val(xbukket.attr("id"));
			var dia = $('#dia_'+frmid);
			dia.find(".xblok").removeClass("hidden");
			//alert(frmid+' '+dia.size())
			if(_val(xbukket,"edtlvl")=="mx"){
				mfButtons_(dia,"Done");
			} else {
				mfButtons_(dia,"SC");
			}
			dia.dialog('open');
			break;
	}
}

function xbktStatus(tar,msg,cls){
	var temp = tar;
	tar = jq(tar);
	if(!msg) return false;
	//if(!tar.size()>0) alert(temp);
	xbkt = tar.closest(".xbukket");
	var status = _xbkt(xbkt,"status");
	var html = "<span class='"+cls+"'>"+msg+"</span>";
	if(!status) {
		switch(xbkt.attr("tagName").toLowerCase()){
			case "table":
				status = "<tr class=\"tr_xbkt_status\"><td class=\"xbkt_status\" colspan=\"100%\"></td></tr>";
			break;
			case "li":
				status = "<li class=\"xbkt_status\"></li>";
			break;
			default:
				status = "<div class=\"xbkt_status\"></div>";
			break;
		}
		xbkt.prepend(status);
		status = _xbkt(xbkt,"status");
	}
	if(status) status.html(html);
}

function xbktNumber(tar,i){
	tar = jq(tar);
	var xbkt = tar.closest(".xbukket");
	//alert(xbkt.attr("class"));
	if(!xbkt.hasClass("xk_table_pag")) return false;
	var loc = _val(xbkt,"loc");
	//alert($(xbkt).attr("tagName"));
	if($(xbkt).attr("tagName").toLowerCase()=="table"){
		var xbloks = xbkt.find(".xblok.loc"+delim+loc);
		//alert(_xbkt(xbkt,"pagxbkt").attr("class"));
		var txt = false;
			
		if(i==undefined){
			var sr = _xbkt(xbkt,"pagsr");
			if(!sr){
				i=false;
			} else {
				
				i = sr+1;
			}
		} else {
			if(isNaN(parseInt(i))) {
				txt = i;
				i=false;
			}
		}
		if(!i)i=1;
		if($(xbkt).find('th.num').size()==0) $(xbkt).find('.titlerow').prepend("<th class=num>#</th>");
		$(xbloks).each(function(e){
			if($(this).find('.xnum').size()==0){
				var baby = $(this).find('.rg0');
				var tag = baby.attr("tagName");
				//alert(tag);
				var num = txt;
				if(!num) num=i;
				$(this).prepend("<"+tag+" class=xnum>"+num+"</"+tag+">");
			}
			i++;
		});
	}
}

function xbktEnable(xbkt,enable){
	var mb = $(xbkt).parents(".moxblok");
	if(!enable){
		init(mb,true);
		$(xbkt).removeClass('ui-state-disabled');
		$(xbkt).find('.xblok,.xbukket').removeClass('ui-state-disabled');
	} else {
		init(mb,false);
	}
}

function xbukketEnterQEMode(xbkt,state,cancel){
	$(xbkt).unbind();
	var xbloks = _xbkt(xbkt,"xbloks");
	if(state){		
		$(xbloks).each(function(e){	
			var bid = _val(this,"bid");
			//$(this).addClass("ui-state-default");
			$(this).find(':input[name*=__is_]').each(function(e){
				var checked = "";
				if($(this).val()==1) checked = " checked";
				var chk_name = this.name.replace("__is_","__chk_is_");
				var chk_id = this.id.replace("__is_","__chk_is_");
				var chk = "<input type=checkbox class=qe name='"+chk_name+"' id='"+chk_id+"' value="+$(this).val()+" "+checked+">";
				$(this).parent('.rok').parent('.rg').append(chk);
				chk = $(this).parent('.rok').parent('.rg').find("[name="+chk_name+"]");
				chk.click(function(e){
					checkboxClick(this);
					//$(this).parents(".xblok:first").addClass("changed");
					if($(this).attr("defaultChecked")!=$(this).attr("checked")){ 
						$(this).parents(".xblok:first").addClass("changed");
					} else {
						$(this).parents(".xblok:first").removeClass("changed");
					}
				});
				var $col= $(this).parent(".rok").parent(".rg");
				var col= $col.metadata().rgi;
				
				//if($(this).find("td.xnum").size()==0) col-=1;
				//$col.append($col.attr("class"));
				var $th= $col.parents("table.xbukket:first").find("tr.titlerow th.th"+col).not(".dms-th-cb");
				//$col.append('th='+$th.size()+" "+col+ ".xnum="+$(this).find("td.xnum").size());
				if($th.size()){
					//$th.append($th.attr("class"));
					$th.dmsThCb();
				}
				//alert("hi");
				//$(this).find(':input[class=qe]').addClass("edited");
				$(this).parent('.rok').hide();
			});
			
		});
	} else {
		$(xbkt).find(".qe").remove();
		$(xbkt).find('.rok').show();
		$(xbkt).find("th.dms-th-cb").dmsThCb("destroy");
		$(xbloks).filter(".changed").each(function(e){	
			//$(this).css({'background':'red'});
			if(cancel){
				$(this).find(':input[name*=__is_]').each(function(e){
					$(this).parents(".rok").text().trim()=="Y" ? val=1 : val=0;
					//alert($(this).parents(".rok").text().trim().length+" "+$(this).val()+" "+val); 
					$(this).val(val);
				});
			} else {
				xblokSave($(this));
			}
			$(this).removeClass("changed").attr("defaultChecked",$(this).attr("checked"));
		});
	}
}

function xbukketEnterQDMode(xbkt,state,cancel){
	$(xbkt).unbind();
	var xbloks = _xbkt(xbkt,"xbloks");
	if(state){		
		if($(xbkt).find('th.del').size()==0) {
			$(xbkt).find('.titlerow').append("<th class=del>Delete</th>");
		}
		
		$(xbloks).each(function(e){
			if($(this).find('.xdel').size()==0){
				var bid = _val(this,"bid");
				var baby = $(this).find('.rg0');
				var tag = baby.attr("tagName");
				//alert(tag);
				var chk = "<input type=checkbox name='del' value=1>";
				$(this).append("<"+tag+" class=xdel style='text-align:center;border:1px solid #fff;'>Delete: "+chk+"</"+tag+">");
			}
		});
		$(xbkt).find("th.del").dmsThCb();
	} else {
		if(!cancel){
			dels = $(xbkt).find('*.xdel').find(':checked');
			var x = confirm("Are you sure you want to delete the selected "+ dels.size() +" record(s)?");
			if(x){
				dels.each(function(e){
					if($(this).attr("checked")) {
						var xblok = $(this).parents('.xblok');
						xblokSave(xblok);
					}
				});
			}
		}
		//data.bloks = bloks;
		$(xbkt).find('*.xdel').remove();
		$(xbkt).find('*.del').remove();
	}
	return true;
}


var sortitem;
function xbukketEnterSortMode(xbkt,state){
	var xbloks = _xbkt(xbkt,"xbloks");
	xbkt = $(xbkt);
	
	if(state){
		xbkt.addClass("xk_sortable");
		xbkt.find('.unmovable').removeClass("hidden");
		var sortOptions= {
			cursor: 'move',
			opacity: 0.5,
			containment:'parent',
			stop: function(event, ui) { xbukketSort(event,ui,xbkt) },
			placeholder: 'ui-state-highlight',
			forcePlaceholderSize: true
		}
		var tag= xbkt.find('.xblok:first').attr("tagName").toLowerCase();
		if(tag=="li" && xbkt.hasClass("recon")){
			sortOptions.items = 'li';
			sortOptions.cancel = 'li.unmovable';
		}
		xbkt.find('.follows').each(function(e){
			//$(this).data('linkedTo',$(this).prev().attr("id")).hide();
			$(this).hide().appendTo($(this).prev());
		})
		//dump(sortOptions);
		xbkt.sortable(sortOptions);	
		xbkt.find(tag).disableSelection();
		
		$(xbloks).addClass("ui-state-default").addClass("xb_sortable").find('*.rok :input:not([name*=title],[name*=name],[name*=imageid],[name*=tagtype])').parent('.rok').hide();
	} else {
		xbkt.removeClass("xk_sortable");
		xbkt.find('.unmovable').addClass("hidden");
		$(xbloks).removeClass("ui-state-default").removeClass("xb_sortable").find('*.rok').show();
		xbkt.find('.follows').each(function(e){
			$(this).parent().after($(this));
		})
		xbkt.find('.follows').show();
	}
}


function xbukketSort(event, ui, xbukket){
	var pid =0;
	var itm = ui.item;
	var xb = itm.closest(".xblok");
	if(xb.size()>0 && xb.metadata().recon) {
		pid = _val(xb,"bid");
		pid_(itm,pid);
	}
	var xbloks = _xbkt(xbukket,"xbloks");
	var i=0;
	var pid=0;
	var bloks = parents ='';
	//alert($(xbukket).attr('class'));
	var loc = _val(xbukket,'loc');
	
	$(xbloks).each(function(e){	
		$(this).find(':input[class*=position]').val(i);
		pid = $(this).find(':input[name$=parentid]').val();
		var blokid = _val(this,'bid');
		if(i){
			bloks+=',';
			parents+=',';
		}
		bloks+=blokid; 
		parents+=pid; 
		i++;
	});
	$.post("ajax.php", { handler:'blokSort', bloks:bloks,parents:parents, loc:loc });
	//$.post("ajax.php?debug=1", { handler:'blokSort', bloks:bloks,parents:parents, loc:loc }, function(data){ dump(data) }, null);
	//alert(bloks);
}

function _xbkt(xbkt,what){
	if(!xbkt) return false;
	var xbloks = $(xbkt).find('.xblok');
	var tar = $(xbkt).attr("id");
	var paginator = $('div.paginator.tar'+delim+tar);
	var pagxbkt = $(paginator).children('.pagxbukket');
	if(pagxbkt.size()==0) pagxbkt= false;
	
	switch(what){
		case "xbloks":
			return xbloks;
		break;
		case "len":
			return $(xbloks).size();
		break;
		case "tar":
			return tar;
		break;
		case "paginator":
			return paginator;
		break;
		case "pagxbkt":
			return pagxbkt;
		break;
		case "pagsr":
			if(!pagxbkt) return false;
			var pagsr = _val(pagxbkt,"pagsr");
			if(pagsr) return parseInt(pagsr);
			var pagmr = _val(pagxbkt,"pagmr");
			var pagcp = _val(pagxbkt,"pagcp");
			return pagmr*pagcp;
		break;
		case "pagon":
			if(!pagxbkt) return false;
			return _val(pagxbkt,"pagon");
		break;
		case "status":
			var status = xbkt.find(".xbkt_status");
			if(status.size()==0) return false;
			return status;
		break;
	}
	
	return false;
}
