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

var QuestionRequest = Class.create({
	
	initialize: function() {
		if (window.questionRequest) {
			throw 'only one instance is allowed!';
		}
		
		var self = this;
		
		self.offset = { left: 0, top: 0 };
		
		$('questionRequestHeading').update(LANG.questionRequest.title.product);
		$('questionRequestName-label').update(LANG.questionRequest.name.label);
		$('questionRequestFon-label').update(LANG.questionRequest.fon.label);
		$('questionRequestEmail-label').update(LANG.questionRequest.email.label);
		$('questionRequestMessage-label').update(LANG.questionRequest.message.label);
		$('questionRequestSubmit').value = LANG.questionRequest.submit.label;
		$('questionRequestCloser').title = LANG.questionRequest.close.label;
		$('questionRequestMover').title = LANG.questionRequest.move.label;
		
		var container = $('questionRequest');
		new Draggable(container, {
			handle: $('questionRequestMover'),
			onEnd: function() {
				var container = $('questionRequest').positionedOffset();
				var offset = document.viewport.getScrollOffsets();
				self.offset.left = container.left - offset.left;
				self.offset.top = container.top - offset.top;
			}
		});
	},
	
	show: function(product) {
		$('questionRequestSubmit').enable();
		
		var form = $('questionRequestForm');
		form.elements['product'].value = location.protocol + '//' + location.host + (location.port ? ':' + location.port : '') + location.pathname + '?tx_commerce_pi1[showUid]=' + product;
		
		var container = $('questionRequest');
		var dimension = container.getDimensions();
		var viewport = document.viewport.getDimensions();
		var offset = document.viewport.getScrollOffsets();
		
		container.setStyle({
			top: (viewport.height - dimension.height) / 2 + offset.top + 'px',
			left: (viewport.width - dimension.width) / 2 + offset.left + 'px'
		});
		
		new Effect.Appear( container, { duration: 1.0 } );
	},
	
	send: function() {
		var self = this;
		
		var name = $F($('questionRequestName')).strip();
		var fon = $F($('questionRequestFon')).strip();
		var email = $F($('questionRequestEmail')).strip();
		var message = $F($('questionRequestMessage')).strip();
		var code = $F($('securImage')).strip();
		var product = $F($('questionRequestProduct'));
		
		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 {
			$('questionRequestSubmit').disable();
			
			var url = 'fileadmin/template/php/questionRequest.php';
			new Ajax.Request(url, {
				method: 'post',
				parameters: {
					product: product,
					name: name,
					fon: fon,
					email: email,
					message: message,
					code: code
				},
				onFailure: function(transport) {
					alert('HTTP Failure: ' + transport.statusText);
				},
				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 {
						$('questionRequestSubmit').enable();
						self.securImage.src = 'fileadmin/template/php/securimage/securimage_show.php';
					}
				}
			});
		}
	},
	
	close: function() {
		new Effect.Fade( 'questionRequest', { duration: 1.0 } );
	},
	
	scroll: function() {
		var self = this;
		var container = $('questionRequest');
		var offset = document.viewport.getScrollOffsets();
		
		container.setStyle({
			top: (offset.top + self.offset.top) + 'px',
			left: (offset.left + self.offset.left) + 'px'
		});
	}
});

var questionRequest = null;

// Event.observe(document, 'click', function() { if (window.questionRequest) window.questionRequest.close(); });
document.observe('dom:loaded', function() {
	if (!questionRequest)
		questionRequest = new QuestionRequest();
});

Event.observe(window, 'scroll', function() {
	if (questionRequest)
		questionRequest.scroll();
});

function callQuestionRequest(product) {
	if (!questionRequest) {
		alert('Bitte warten Sie, bis die Seite vollständig geladen ist!');
	} else {
		questionRequest.show(product);
	}
}

