/**
 * "Frage zum Artikel"-Script für T3 Commerce.
 * 
 * @copyright 2009 - InfinityLabs - Olck & Lins GbR
 */ 

var QuestionRequest = Class.create({
	elementContainer: null,
	elementName: null,
	elementFon: null,
	elementEmail: null,
	elementMessage: null,
	securImage: null,
	elementSecurImage: null,
	buttonClose: null,
	buttonSend: null,
	product: null,
	article: null,
	
	initialize: function(product, article) {
		if (window.questionRequest)
			throw 'only one instance is allowed!';
		
		var self = this;
		
		this.product = product;
		this.article = article;
		
		var title;
		if (article)
			title = LANG.questionRequest.title.article;
		else
			title = LANG.questionRequest.title.product;
		
		this.elementName = Builder.node('input', { type: 'text', id: 'questionRequestName', name: 'name', 'class': 'text-input' });
		this.elementFon = Builder.node('input', { type: 'text', id: 'questionRequestFon', name: 'fon', 'class': 'text-input' });
		this.elementEmail = Builder.node('input', { type: 'text', id: 'questionRequestEmail', name: 'email', 'class': 'text-input' });
		this.elementMessage = Builder.node('textarea', { type: 'text', id: 'questionRequestMessage', name: 'message', 'class': 'text-input' });
		
		this.securImage = Builder.node('img', { src: 'fileadmin/template/php/securimage/securimage_show.php', alt: '' });
		this.elementSecurImage = Builder.node('input', { type: 'text', id: 'securImage', name: 'securImage', 'class': 'text-input' });
		
		this.buttonClose = Builder.node('input', { type: 'button', value: LANG.questionRequest.close.label });
		this.buttonClose.onclick = function() { self.close(); };
		
		this.buttonSend = Builder.node('input', { type: 'button', value: LANG.questionRequest.submit.label });
		this.buttonSend.onclick = function() { self.send(); };
		
		this.form = Builder.node('form', [
				Builder.node('h6', [ title ]),
				Builder.node('p', [
					Builder.node('label', { 'for': 'questionRequestName' }, [ LANG.questionRequest.name.label ]),
					this.elementName
				]),
				Builder.node('p', [ 
					Builder.node('label', { 'for': 'questionRequestFon' }, [ LANG.questionRequest.fon.label ]),
					this.elementFon
				]),
				Builder.node('p', [ 
					Builder.node('label', { 'for': 'questionRequestEmail' }, [ LANG.questionRequest.email.label ]),
					this.elementEmail
				]),
				Builder.node('p', [ 
					Builder.node('label', { 'for': 'questionRequestMessage' }, [ LANG.questionRequest.message.label ]),
					this.elementMessage
				]),
				Builder.node('p', [ 
					Builder.node('div', [ this.securImage ]),
					this.elementSecurImage
				]),
				Builder.node('p', {
					'class': 'buttons'
				}, [
					self.buttonClose,
					self.buttonSend
				])
		]);
		this.form.onsubmit = function() { self.send(); }

		this.elementContainer = Builder.node('div', {
			id: 'questionRequest',
			style: 'display:none'
		}, [
			Builder.node('div', {
				'class': 'questionRequest_content'
			}, [
				this.form
			])
		]);
		Event.observe(this.elementContainer, 'click', function(event) { event.stop(); });
		
		$(document.body).insert( this.elementContainer );
		
		var dimension = this.elementContainer.getDimensions();
		var viewport = document.viewport.getDimensions();
		var offset = document.viewport.getScrollOffsets();
		
		this.elementContainer.setStyle({
			top: (viewport.height - dimension.height) / 2 + offset.top + 'px',
			left: (viewport.width - dimension.width) / 2 + offset.left + 'px'
		});
		
		new Effect.SlideDown( this.elementContainer, { duration: 2.0 } );
		window.questionRequest = this;
	},
	
	send: function() {
		var self = this;
		
		var name = $F(this.elementName).strip();
		var fon = $F(this.elementFon).strip();
		var email = $F(this.elementEmail).strip();
		var message = $F(this.elementMessage).strip();
		var code = $F(this.elementSecurImage).strip();
		
		var errors = [];
		if (!name)
			errors.push( LANG.questionRequest.name.missing );
		
		if (!fon && !email)
			errors.push( LANG.questionRequest.contact.missing );
		
		if (!message)
			errors.push( LANG.questionRequest.message.missing );
		
		if (!code)
			errors.push( LANG.questionRequest.code.missing );
		
		if (errors.length > 0) {
			alert (errors.join("\n"));
		} else {
			$(this.buttonSend).disable();
			$(this.buttonClose).disable();
			
			var url = 'fileadmin/template/php/questionRequest.php';
			new Ajax.Request(url, {
				method: 'post',
				parameters: {
					product: self.product,
					article: self.article,
					name: name,
					fon: fon,
					email: email,
					message: message,
					code: code
				},
				onSuccess: function(transport) {
					var data = transport.responseJSON;
					var msg = [];
					data.messages.each(function(item) { msg.push(eval(item)); });
					if (msg.length > 0)
						alert(msg.join('\n'));
					if (data.state == 'ok') {
						self.close();
					} else {
						$(self.buttonSend).enable();
						$(self.buttonClose).enable();
						self.securImage.src = 'fileadmin/template/php/securimage/securimage_show.php';
					}
				}
			});

		}
	},
	
	close: function() {
		var self = this;
		new Effect.BlindUp( this.elementContainer, { duration: 2.0 } );
		window.questionRequest = null;
		window.setTimeout( function() {
			self.elementContainer.remove();
		}, 2500);
	},
	
	scroll: function() {
		var dimension = this.elementContainer.getDimensions();
		var viewport = document.viewport.getDimensions();
		var offset = document.viewport.getScrollOffsets();
		
		this.elementContainer.setStyle({
			top: (viewport.height - dimension.height) / 2 + offset.top + 'px',
			left: (viewport.width - dimension.width) / 2 + offset.left + 'px'
		});
	}
});

// Event.observe(document, 'click', function() { if (window.questionRequest) window.questionRequest.close(); });
Event.observe(window, 'scroll', function() { if (window.questionRequest) window.questionRequest.scroll(); });
