
function gatherContent2() {
	
	window.contents = new Array();

	var snippets = [];

	$(document.body).getElements('*[dyncontent]').each(function(el,idx){
		snippets.push(el.getProperty('dyncontent'));
	});
	
	var data = { 'rnd': Math.floor(Math.random()*1000000) };
	
	snippets.each(function(sname,idx) {
		data['snippet_'+idx] = sname;
	});
;
	var req = new Ajax("/cgi-bin/content.cgi", {
		'data': data,
		onComplete: function(){
			var r = {};
			try {
				r = Json.evaluate(this.response.text);
			} catch (ex) {}
			for (var s in r) {
				$E('*[dyncontent^='+s+']').empty().setHTML(r[s]);
				// evalScripts
				var scripts = [];
				var regexp = /<script[^>]*>([\s\S]*?)<\/script>/gi;
				while ((script = regexp.exec(r[s]))) scripts.push(script[1]);
				scripts = scripts.join('\n');
				if (scripts) (window.execScript) ? window.execScript(scripts) : window.setTimeout(scripts, 0);
			}
		}
	}).request();
	
	window.contents.push(req);
	// 
	gatherStaticContent();
	// 
	var grp = new Group(window.contents);
	grp.addEvent('onComplete', function() { window.fireEvent('contentsReady') } );

}

function gatherStaticContent() {
	$(document.body).getElements('*[staticcontent]').each(function(el,idx){
		
		var sc = el.getProperty('staticcontent');
		var rsrc = sc.split(':');
		
		el.ajax_request = new Ajax(rsrc[0], {
						method: 'get',
						evalScripts: true,
						onComplete: (function() { 
							var rsrc = el.getProperty('staticcontent').split(':');
							if ($defined(rsrc[1])) {
								var c = new Element('div');
								c.setHTML(this.ajax_request.response.text);
								c.getElement(rsrc[1]);
								this.empty().setHTML(c.innerHTML);
							} else {
								this.empty().setHTML(this.ajax_request.response.text);
							}
							}).bind(el)
						}).request();

		window.contents.push(el.ajax_request);
		
	});
}

gatherContent = gatherContent2;
// function gatherContent() {
// 
// 	window.contents = new Array();
// 
// 	$(document.body).getElements('*[dyncontent]').each(function(el,idx){
// 
// 		el.ajax_request = new Ajax("/cgi-bin/content.cgi", {
// 						data: {
// 							'snippet': el.getProperty('dyncontent'),
// 							'rnd': Math.floor(Math.random()*1000000)
// 						}, 
// 						//method: 'get',
// 						update: el,
// 						evalScripts: true
// 						}).request();
// 		
// 		window.contents.push(el.ajax_request);
// 	});
// 	
// 	$(document.body).getElements('*[staticcontent]').each(function(el,idx){
// 		
// 		var sc = el.getProperty('staticcontent');
// 		var rsrc = sc.split(':');
// 		
// 		el.ajax_request = new Ajax(rsrc[0], {
// 						method: 'get',
// 						evalScripts: true,
// 						onComplete: (function() { 
// 							var rsrc = el.getProperty('staticcontent').split(':');
// 							if ($defined(rsrc[1])) {
// 								var c = new Element('div');
// 								c.setHTML(this.ajax_request.response.text);
// 								c.getElement(rsrc[1]);
// 								this.empty().setHTML(c.innerHTML);
// 							} else {
// 								this.empty().setHTML(this.ajax_request.response.text);
// 							}
// 							}).bind(el)
// 						}).request();
// 
// 		window.contents.push(el.ajax_request);
// 		
// 	});
// 
// 	var grp = new Group(window.contents);
// 	grp.addEvent('onComplete', function() { window.fireEvent('contentsReady') } );
// 
// }

var Pager = new Class({

	options: {
		'divclass': 'pager',
		'about_current': 3,
		'about_margin': 3,
		'prevText': "&laquo;&nbsp;Пред.",
		'nextText': "След.&nbsp;&raquo;"
	},
	
	initialize: function(pg,capacity,pageCallback) {
		
		pg = parseInt(pg);
		pg = pg || 1;

		this.domel = new Element('div',{ 'class': this.options.divclass });
		
		var html = '';
		
		if (pg != 1) {
			var span = new Element('span',{
					'class': 'lnk',
					'events': { 'click': pageCallback }
			}).setHTML(this.options.prevText);
			span.page = pg-1;
			this.domel.adopt(span);
		}
		
		// which pages to show
		var page_numbers = [];
		
		for (var i=1; i<=capacity; i++) {
			if (i <= this.options.about_margin ||
				i >= capacity-this.options.about_margin+1 ||
				(i >= pg-this.options.about_current && i <= pg+this.options.about_current)
				) {
				page_numbers.push(i);
			}
		}

		var p_links = [];
		var prev_page = 0;
		var ellipsis = new Element('span',{
			styles: {
				'margin': '0px 2px',
				'border-width': '0px'
			}
		}).setHTML('&#0133;');
		for (var i=0, len=page_numbers.length; i<len; i++)	{
			if (page_numbers[i]-prev_page != 1) {
				p_links.push(ellipsis);
			}

			var lnk =  page_numbers[i] != pg ? 
											new Element('span',{
												'class': 'lnk',
												'events': { 'click': pageCallback	}
											}).setText(page_numbers[i])
											 :
											new Element('span',{
												'class': 'curr'
											}).setText(page_numbers[i]);
			lnk.page = page_numbers[i];
											
			
			p_links.push(lnk);
			prev_page = page_numbers[i];
		}
		
		//html += p_links.join('');
		this.domel.adopt(p_links);

		if (pg != capacity) {
			// not last then we can go next
			var span = new Element('span',{
					'class': 'lnk',
					'events': { 'click': pageCallback }
			}).setHTML(this.options.nextText);
			span.page = pg+1;
			this.domel.adopt(span);
		}
		
	},
	
	inject: function(el) {
		
		$(el).empty().adopt(this.domel);

		return this;
		
	}

});



















