BehaviourRules = {
	'.paginator.ajax li a' : function (lnk){ // disable the anchor tags
//		ul = Element.getParent(lnk,"UL");
//		wrapperdiv = ul.parentNode;
		wrapperdiv = Element.getParent(lnk,".paginated"); // selector of .shell sometimes works better?
		if (wrapperdiv.id.substring(wrapperdiv.id.length-4,wrapperdiv.id.length)=="_div")
			paginatorid = wrapperdiv.id.substring(0,wrapperdiv.id.length-4) + "_pg"; // get the id from the wrapper div
		else
			paginatorid = wrapperdiv.id + "_pg"; // get the id from the wrapper div
		var params = unescape(lnk.href.substring(lnk.href.indexOf("?")+1,lnk.href.length).toQueryParams()[paginatorid]).evalJSON();
		var wrapper = Element.getParent(lnk,"LI");
		wrapper.c = params["c"];
		wrapper.s = params["s"];
		lnk.c = params["c"];
		lnk.s = params["s"];
		function clickPage(wrapperdiv,ulid,c,s){
			var jsonobject = new Object;
			jsonobject["id"] = ulid;
			jsonobject["c"] = c;
			jsonobject["s"] = s;
//			alert(Object.toJSON(jsonobject));
			gotourl = getAjaxURL(); // should not strip the querystring, which we may need for paginators
			var myAjax = new Ajax.Request(gotourl, {method: 'post', postBody: Object.toJSON(jsonobject), 
				onComplete: function(e){
					AJAX.showResponse(e);
//					Behaviour.applyToId(tablediv.id);
					AJAX.complete(wrapperdiv);
					if (!$(ulid.substring(0,ulid.length-3)).hasClassName('noscroll'))
						$(wrapperdiv).scrollTo();
				},
				onLoading: function(e){
					AJAX.loading(wrapperdiv);
				},
				onFailure: AJAX.reportError, contentType: 'text/plain; charset=UTF-8'} );
		}
		Event.observe(lnk, "click", function(e){
			clickPage(wrapperdiv,paginatorid,lnk.c,lnk.s);
			Event.stop(e);
		});
		Event.observe(wrapper, "click", function(e){
			clickPage(wrapperdiv,paginatorid,wrapper.c,wrapper.s);
			Event.stop(e);
		});
	},
	'.paginator li' : function (wrapper){
		Event.observe(wrapper, "mouseover", function(e){
			Element.addClassName(wrapper,"over");
		});
		Event.observe(wrapper, "mouseout", function(e){
			Element.removeClassName(wrapper,"over");
		});
	}
};
Behaviour.load(BehaviourRules);
