var MAGSelCat;
var MAG = Object.extend({}, MAG || {});

MAG.Testimonials = Class.create();
MAG.Testimonials.prototype =
{
	initialize: function( options )
	{
		var url = self.location.toString();
		var m = url.match( /id=([0-9]*)/ );
		this.options = {
      opacity: 40,
      div: { id: 'popUpTestimonial' },
      body: $$('body').first(),
      url: url.substring( 0, url.lastIndexOf("/") + 1 ) + "man_testimonials.php",
      loading: '<img src="images/loading.gif" alt="" />',
      estate_id: m[1]
    };
    
    Object.extend(this.options, options || {});
    return true;
	},
	
	load: function()
	{
		Loading.start( this.options.opacity );
		var dim = Loading.getDimensions();
		this.div = document.createElement('div');
		this.div.style.display = 'none';
		this.div.id = this.options.div['id'];
		this.div.innerHTML = this.options.loading;
		
		Position.prepare();
		this.div.style.left = Position.deltaX + parseInt ( dim.width ) / 2 + 'px';
		this.div.style.top = Position.deltaY + parseInt ( dim.height ) / 2 + 'px';
		
		this.div.style.visibility = 'hidden';
		
		this.options.body.appendChild( this.div );
		
		this.div.style.marginLeft = -parseInt( Element.getStyle( this.div, 'width' ) ) / 2 + 'px';
		this.div.style.marginTop = -parseInt( Element.getStyle( this.div, 'height' ) ) / 2 + 'px';
		
		this.div.style.visibility = 'visible';
				
		Effect.Appear( this.div, { 
			duration: 0.5, 
			afterFinish: function() {
				new Ajax.Request( this.options.url, {
					method: 'post', 
					parameters: '',
					onComplete: this.requestFinalize.bind(this)
				} );
			}.bind(this)
		} );
	},
	
	validate: function( e, func )
	{
		var el = Event.element(e);
				el.disabled = true;
				Element.toggle($('smallLoading'));
				this[func](el,el.parentNode.parentNode);
		return;
	},
	
	authForm: function( but, mf )
	{
		new Ajax.Request( this.options.url, {
			method: 'post', 
			parameters: Form.serialize(mf),
			onComplete: this.requestFinalize.bind(this)
		} );
		return;
	},
	
	addCommentForm: function( but, mf )
	{
		if ( mf.comment.value.replace( / /g, '' ).length == 0 )
		{
			Element.toggle($('smallLoading'));
			but.disabled = false;
			mf.comment.focus();
			return;
		}
		
		new Ajax.Request( this.options.url, {
			method: 'post', 
			parameters: Form.serialize(mf) + '&id=' + this.options.estate_id,
			onComplete: this.requestFinalize.bind(this)
		} );
		return;
	},
	
	requestFinalize: function( req, json )
	{
		this.div.innerHTML = req.responseText;
		return;
	},
	
	end: function()
	{
		Effect.Fade( this.div, { 
			duration: 0.5, 
			afterFinish: function() {
				this.div.parentNode.removeChild(this.div);
				Loading.stop();
			}.bind(this)
		} );
	}
};