/**
 * @author: Alex Tereh
 * @requires: prototype.js, utils.js, elements-addition-methods.js
 */
var ajaxPaginator = Class.create();
ajaxPaginator.prototype = {

	initialize: function( idStructureContainer )
	{
		this.objContainer = $(idStructureContainer);
		Event.observe(document, 'dom:loaded', this.setCathers.bindAsEventListener(this) );
	},
	
	setCathers: function( )
	{
		var objLinks = this.objContainer.getElementsBySelector('a[rel="paginator"]');
		if( objLinks )
		{
			for( var i=0; i< objLinks.length;i++)
			{
				objLinks[i].onclick = function()
				{
					return false;
				}
				Event.observe(objLinks[i],'click',this.sendRequest.bindAsEventListener(this) );
			}
		}
	},
	
	sendRequest: function( objEvent )
	{
		var aLink = Event.findElement(objEvent,'a');
		if( aLink )
		{
			this.showPreloader();
			var req = new Ajax.Request(
					aLink.href,
					{method:'get', onComplete:this.successRequest.bind(this)});
			
		}
	},
	
	successRequest: function( objResponce )
	{
		//var scripts = (objResponce.responseText.extractScripts());

		//this.objContainer.update(objResponce.responseText.stripScripts());
		var dataNews = objResponce.responseJSON;
		
		new Insertion.Bottom(this.objContainer.down('ul'), dataNews.data);
		$('nav-pages').replace(dataNews.pages);
		if( dataNews.pages){
			this.setCathers();
		}
		setupZoom();		
		this.hidePreloader();
	},
	
	showPreloader: function()
	{
		var body_obj = document.getElementsByTagName('body')[0];
		var i_left 	= Utils.getLeftPos( this.objContainer );
		var i_top	= Utils.getTopPos( this.objContainer );
		var i_y		= this.objContainer.getHeight();
		var i_x		= this.objContainer.getWidth();
		if( !$('progress_back'+ this.objContainer.id) ){
			body_obj.append('div',{className:'preloader-background',id:'progress_back'+ this.objContainer.id})			
		}
		if( !$('progress_image' + this.objContainer.id) ){
			body_obj.append('div',{className:'preloader-image',id:'progress_image' + this.objContainer.id});			
		}
		
		var objStyle = this.getPreloaderBgStyle(i_left,i_top,i_x,i_y);
		$('progress_back'+this.objContainer.id).setStyle( objStyle );
		$('progress_image'+this.objContainer.id).setStyle({
							left: (Math.floor((i_x)/2)- 8 + i_left) + 'px',
							top: (Math.floor((i_y)/2)- 8 + i_top) + 'px',
							display:'block'});		
	},
	
	hidePreloader: function()
	{
		$('progress_back'+ this.objContainer.id).setStyle({display:'none'});
		$('progress_image'+ this.objContainer.id).setStyle({display:'none'})
	},
	
	getPreloaderBgStyle: function(i_left,i_top,i_x,i_y)
	{
		var objStyle = {display:'block',
						left:	i_left + 'px',
						top: 	i_top+'px',
						width:	i_x + 'px',
						height:	i_y + 'px'}
		return objStyle;				
	}
	
}
