function initPagination(tip,disable){
	if($(tip).hasClass('paginator')) initPaginator(tip,disable);
    $("#"+tip[0].id+' div.paginator').each(function(e){
		initPaginator($(this),disable);
	});
}

function initPaginator(paginator,disable){
	$(paginator).find(".pagxbukket").each(function(e){
		initPagXbukket($(this),disable);
	});
}

function toggleAjax(frm,ajx){
	frm.unbind("submit");
	if(ajx){
		//if(frm.hasClass("ajax")) return false;
		if(!frm.hasClass("ajax")) frm.addClass("ajax");
		initForms(frm);
	} else {
		//alert("removing ajax class");
		if(!frm.hasClass("ajax")) return false;
		frm.removeClass("ajax");
		initForms(frm);
	}
}

function initPagXbukket(pagxbkt,disable){
	//dump($(pagxbkt).hasClass("pag_inited"),"inited");
	if(!$(pagxbkt).hasClass("pag_inited")){
		//alert('initing');
		var paginator = $(pagxbkt).parent('.paginator');
		var loc = _val(pagxbkt,'loc');
		var pagnp = _val(pagxbkt,'pagnp');
		var pagcp = _val(pagxbkt,'pagcp');
		var pagldm = _val(pagxbkt,'pagldm');
		var tar = _val(paginator,'tar');
		
		if(pagnp==0){
			pagnp=1;
			updateClass(pagxbkt,'pagnp','1');
		}
		var pagdata = { loc:loc, tar:tar };
		//dump({ tar:tar, pages: pagnp, current: pagcp });
		$(pagxbkt).pagination(tar, { pages: pagnp, current: pagcp },  
			// And a callback 
			function (response){ 
				
				dump(response,"initPagXbukket response");
				//alert("response");
				var tar = response[0];
				
				var paginator = $('div.paginator.tar'+delim+tar);
				var pagxbkt = paginator.children('.pagxbukket');
				var pagldm = _val(pagxbkt,'pagldm');
				var ajx=false;
				if(pagldm=="AJX") ajx=true;
				toggleAjax($("#frm_pagxbukket"),ajx);
				//alert(ajx);
				if(!justloaded || ajx){
					var pagmr = parseInt(_val($(pagxbkt),'pagmr'));
					var loc = _val($(pagxbkt),'loc');
					//alert("ok");
					var pagsr = pagmr*this;
					$("#frm_pagxbukket input[name='tar']").val(tar);
					$("#frm_pagxbukket input[name='loc']").val(loc);
					$("#frm_pagxbukket input[name='pagsr']").val(pagsr);
					$("#frm_pagxbukket input[name='pagmr']").val(pagmr);
					
					var mx = $("#"+tar);
					var clss = _val(mx,"clss").replace('xk_','mx_');
					if(clss=='xbukket') clss='moxblok';
					$("#frm_pagxbukket input[name='layout']").val(_val(mx,"lyt"));
					$("#frm_pagxbukket input[name='clss']").val(clss);
					//dump($("#frm_pagxbukket").submit());
					//alert($("#frm_pagxbukket").attr("class"));
					//$("#frm_pagxbukket")[0].submit();
					ajaxSubmit($("#frm_pagxbukket"));
				} 
			});
		$(pagxbkt).addClass("pag_inited");
		if(pagldm=="AJX") pagxbktRenumber(tar);
	}
}

function updatePagXbktTxt(tar,paginfo){
	//dump(paginfo);
	//alert(paginfo.pagtr);
	for(var key in paginfo){
		paginfo[key] = parseInt(paginfo[key]);
	}
	var fr=paginfo.pagsr+1;
	var lr=fr+paginfo.pagmr-1;
	var tr= paginfo.pagtr;
	if(lr>tr) lr=tr;
	var cp = paginfo.pagcp+1;
	var np = paginfo.pagnp;
	if(np==0) np=1;
	var str = "Page <strong>"+cp+"</strong> of "+np+".";
	str+="<br />(records <strong>"+fr+"-"+lr+"</strong> of "+tr+")";
	var selector = 'div.paginator.tar'+delim+tar;
	//alert(selector);
	var paginator = $(selector);
	var xbkt = jq(tar);
	var pagxbkt = $(selector).children('.pagxbukket');
	updateClass(pagxbkt,'pagtr',tr);
	updateClass(pagxbkt,'pagnp',np);
	updateClass(pagxbkt,'pagcp',paginfo.pagcp);
			
	
	var i = paginfo.pagsr+1;
	xbktNumber(xbkt,i);
	//alert($(paginator).size());
	$(paginator).children('.pagtxt').html(str);
	pagShowLoader(tar,true);
	
	str = "Found <strong>"+tr+"</strong> records matching search criteria: <br>";
	fltrStatus(tar,str);
}


function pagShowLoader(tar,hide){
	//dump(paginfo);
	//alert(paginfo.pagsr);
	var loader = $('#ldr');
	if(hide){
		if(loader.size()) loader.hide();
	} else {
		var selector = 'div.paginator.tar'+delim+tar[0].id;
		//alert(selector);
		var paginator = $(selector);
		//alert($(paginator).size());
		var pos = tar.position();
		var w = tar.width();
		var left = Math.ceil(pos.left+w/2-16);
		var top = Math.ceil(pos.top + 50);
		
		if(!$(loader).size()){
			$("#site").append("<div id=ldr><img src='app_images/ajax-loader.gif'></div>");
			loader = $('#ldr');
		}
		loader.show();
		loader.css({"position":"absolute","z-index":"1000","top":top+'px',"left":left+'px'});
		//alert("prepended loader");
		//alert("moved loader");
		
		$(paginator).children('.pagtxt').html("Loading...");
	}
}

function pagxbktRenumber(tar){
	//alert(tar);
	tar = jq(tar);
	var selector = 'div.paginator.tar'+delim+tar[0].id;
	var pagxbkt = $(selector).children('.pagxbukket');
	var np = _val(pagxbkt,"pagnp");
	var cp = _val(pagxbkt,"pagcp");
	
	//alert("np="+np+", cp="+cp);
	$(pagxbkt).pagination('renumber', { pages:np, current:cp });
	//initPaginator($(selector));
}

function fltrStatus(tar, msg){
	//alert(msg);
	tar = jq(tar);
	var selector = 'div.filterForm.tar'+delim+tar[0].id;
	var fltrForm = $(selector);
	
	if($(fltrForm).size()>0){
		var st = $(fltrForm).find("div.status");
		var fieldset = $(fltrForm).find("fieldset[name=fltrFields]");
		var fields = $(fieldset).find(":input[name^=fltr_]");
		var i=0;
		//alert($(fields).size());
		$(fields).each(function(e){
			var val = getVal($(this));
			//alert("val="+val);
			var nan = isNaN(parseInt(val));
			if((!nan && val>0) || (nan && val.length>0)){
				val = getVal($(this),true);
				if($(this).is(".cb-filter")){
					data= $(this).data("cb-filter");
					if(data.displayVal) msg += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>"+data.displayName+ "</strong> " +data.displayVal+".<br>";
				} else {
					var lbl = $(this).siblings("label").text().replace(":","");
					var oid = $(this).attr("id").replace("fltr_","oprd_");
					var oprd="equals";
					//alert(oid);
					var foprd = $("#"+oid);
					//alert($(foprd).size());
					if($(foprd).size()==1){
						oprd = getVal($(foprd),true);
					}
					msg += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>"+lbl+ "</strong> " +" "+oprd+" \""+ val+"\".<br>";
				}
				i++;
				
			}
		});
		if(i==0) msg += "<strong>No criteria entered.</strong>";
		
		fieldset = $(fltrForm).find("fieldset[name=srtFields]");
		fields = $(fieldset).find(":input[name^=srt_]");
		var x=0;
		var asc;
		//alert($(fields).size());
		var smsg="<br><br>Sorted By:<br>";
		$(fields).each(function(e){
			val = getVal($(this),true);
			if(val!="Select One"){
				asc = getVal($(this).next(),true);
				if(x) smsg+=",<br>";
				smsg += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>"+val+ "</strong> " +asc;
				x++;
			}
		});
		if(x==0) smsg += "<strong>No sort order selected.</strong>";
		$(st).html(msg+smsg).corner("8px");
	}
}

function presubmitPaginator(frm){
	var tar = $(frm).find(':input[name=tar]').val();
	tar = jq(tar);
	//alert(tar.attr('id'));
	init(tar,true);
	pagShowLoader(tar);
	fltrStatus(tar,"Loading...<br>");
	return false;
}
