var callback_popup;

//JavaScript Document
var Popup = new Class({

	Implements: [Options, Events],

	options: {
		title: "Title", 
		width: 200, 
		height: 200, 
		adoptElement: null, 
		add_close_button: true, 
		use_title: true
	},
	popupElement: null,
	mainElement: null,
	contentElement: null,
	overlay: null,
    
	initialize: function(options) {
		this.setOptions(options);     
		this.createOverlay();
		this.createPopup();
		this.adopt();
		this.popupElement.setStyle('display','none');
	},
    
	show: function() {
		this.popupElement.setStyle('display','block');
		this.blankScreen();
		this.popupElement.fade('in');
	},
    
	createOverlay: function() {
		this.overlay = new Element('div', {
    		
			styles: {
				position: 'fixed',
				width: '100%',
				height: '100%',
				'z-index': '1',
				'background-color': '#000',
				top: '0',
				left: '0',
				'visibility': 'hidden'
			}
    		
		});
		this.overlay.inject($(document.body));
	},
    
	setTitle : function(title) {
		this.mainElement.getElement('h1').set('html', title);
	},
    
	blankScreen : function(){
		this.overlay.fade('0.9');
	},
    
	showScreen : function() {
		this.overlay.fade('out');
	},
    
	close: function() {
		this.popupElement.fade('out');
		this.popupElement.setStyle('display','none');
		this.showScreen();
	},
    
	setPosition: function(x, y) {
		this.popupElement.setStyle('left', x);
		this.popupElement.setStyle('top', y);
      
	},
    
	centre: function() {
		var x = (window.getSize().x / 2) - (this.popupElement.getSize().x / 2);
		var y = (window.getSize().y / 2) - (this.popupElement.getSize().y / 2);
		if (y < 0) {
			y = 100;
		}
		this.setPosition(x, y);
	},

	createPopup: function() {
		this.popupElement = new Element('div', 
		{
			'class': 'popup', 
			'styles': {
				'width': this.options.width, 
				'height': this.options.height,
				'z-index': '2',
				'position': 'fixed'
			}
		});
		this.mainElement = new Element('div', 
		{
			'class': 'main'
		});
		this.popupElement.setStyle('opacity', 0);
		topBar = new Element('div', {
			'class': 'top', 
			'styles': {
				'width': this.options.width - 10
				}
			});
	bottomBar = new Element('div', {
		'class': 'bottom', 
		'styles': {
			'width': this.options.width - 10
			}
		});
leftBar = new Element('div', {
	'class': 'left', 
	'styles': {
		'height': this.options.height - 10
		}
	});
rightBar = new Element('div', {
	'class': 'right', 
	'styles': {
		'height': this.options.height - 10
		}
	});
brCorner = new Element('div', {
	'class': 'bottom-right'
});
blCorner = new Element('div', {
	'class': 'bottom-left'
});
trCorner = new Element('div', {
	'class': 'top-right'
});
tlCorner = new Element('div', {
	'class': 'top-left'
});
this.contentElement = new Element('div', {
	'class': 'content'
});
      
if (this.options.add_close_button) {
	closeEl = new Element('a', {
		'class': 'close', 
		'href': '#'
	});
	closeEl.addEvent('click', function() {
		this.close();
		return false;
	}.bindWithEvent(this));
	closeEl.inject(this.popupElement);
}
      
title = new Element('h1');
topBar.inject(this.popupElement);
bottomBar.inject(this.popupElement);
leftBar.inject(this.popupElement);
rightBar.inject(this.popupElement);
brCorner.inject(this.popupElement);
blCorner.inject(this.popupElement);
trCorner.inject(this.popupElement);
tlCorner.inject(this.popupElement);
if(this.options.use_title)
{
	title.inject(this.mainElement);
	this.setTitle(this.options.title);
      	
}
this.contentElement.inject(this.mainElement);
this.mainElement.inject(this.popupElement);
this.popupElement.inject($(document.body), 'top');
this.centre();
      
},
    
adopt: function() {
	if (this.options.adoptElement == null) {
		return;
	}
	this.options.adoptElement.inject(this.contentElement);
}
    
});


var FeedbackPopup = new Class({
	Extends: Popup,
	initialize: function(options){
		this.parent(options);
	},
    
	createPopup: function() {
		this.parent();
		$('feedbackForm').addEvent('submit', function(event) {
			event.stop();
			this.validateAndSend();
		}.bindWithEvent(this));
	},
    
	validateAndSend: function() {
    	
		var rqp = this;
    	
		if(!$('feedback_enquiry').value.length) {
			alert('Please enter a comment before submitting.');
		} else {
			var jSonRequest = new Request.JSON({
				url: '/ajax/', 
				onSuccess: function(responseJSON, responseText) {
					
					$('feedback_formSuccess').set('html', responseJSON.message);
					$('feedback_formContent').setStyle('display', 'none');
					$('feedback_formSuccess').setStyle('display', 'block');
					$('feedback_formMsg').setStyle('display', 'none');
					if (responseJSON.status == 'OK') {
						closeFunction.delay(1800);
						resetFunction.delay(3800);
					}


				}
			}).post({
			'action': 'sendFeedbackForm', 
			'contact_email': $('feedback_email').value, 
			'cust_name': $('feedback_name').value, 
			'contact_enquiry': $('feedback_enquiry').value
			});
		}
      
}
    
});

var closeFunction = function(){ 
	feedback_popup.close(); 
};
   

var resetFunction = function(){
	$('feedback_formContent').setStyle('display', 'block');
	$('feedback_formSuccess').setStyle('display', 'none');
};


window.addEvent('domready', function(){	
	new NS.Placeholder({
		color: '#999'
	});
	
	if (typeOf($('feedback_link')) != 'null') {
		feedback_popup = new FeedbackPopup({
			title: "Feedback form", 
			width: 600, 
			height: 360, 
			adoptElement: $('feedback_form'), 
			add_close_button: true, 
			use_title: false
		});
		$('feedback_link').addEvent('click', function(event){
			event.stop();
    		
			feedback_popup.show();
    		
    		
		})
	}
	
	$$('input, textarea').each(function(el) {
		if((el.getProperty('class') + '').indexOf('required') > -1) {
			el.getParent().addClass('required');
		}
	});
	
	$$('#nav_read_more a').addEvent('click', function(e) {
		e.stop();
		$$(this.toggleClass('active').getProperty('href')).toggleClass('open');
		window.scrollTo(0,10000);
	});
	
});
