var DeconOptions = {
	Animation: {
		Duration: .25,
		Delay: 0
	},
	Color: {
		active: '#f0a300',
		inactive: '#666666'
	},
	Padding: {
		active: '0px',
		inactive: '12px'
	},
	Width: {
		active: '173px',
		inactive: '161px'
	},
	Contact: {
		Url : '/message.php',
		Method: 'POST',
		Message: {
			Success: {
				de: 'Nachricht wurde versendet.',
				en: 'Message has been send.'
			},
			NoConnection: {
				de: 'Keine Verbindung zum Server.',
				en: 'Unable to connect to server.'
			},
			Failure: {
				de: 'Ein Fehler ist aufgetreten.',
				en: 'An error occured.'
			},
			Error: {
				de: 'Nachricht konnte nicht gesendet werden.',
				en: 'Unable to deliver message.'
			},
			MissingData: {
				de: 'Unvollst&auml;ndige, oder fehlerhafte Eingabe.',
				en: 'Incomplete or incorrect input.'
			}
		},
		getInput: function() {
			var error = new Boolean(false);
			this.Parameters = new Object();
			this.Parameters.name =		$($('contact')['name']).value;
			this.Parameters.email =		$($('contact')['email']).value;
			this.Parameters.subject =	$($('contact')['subject']).value;
			this.Parameters.reason =	$($('contact')['reason']).options[$($('contact')['reason']).selectedIndex].value;
			this.Parameters.number =	$($('contact')['number']).value;
			this.Parameters.message =	$($('contact')['message']).value;
			this.Parameters.target =	$($('contact')['target']).value;
			for( var p in this.Parameters) {
				if(this.Parameters[p].blank()) {
					$($('contact')[p]).value = '';
					error = true;
					$($('contact')[p]).setStyle({ border: '1px solid #f00' });
					new Effect.Morph($($('contact')[p]), { duration: 1, delay: 1, style: 'border: 1px solid #fff;'});
				}
			}
			return ((error == true) ? false : true);
		},
		disableInput: function() {
			$($('contact').parentNode.select('a.bn-submit')[0]).onclick = null;
			for( var p in this.Parameters) {
				$($('contact')[p]).readOnly = true;
				$($('contact')[p]).disabled = true;
			}
		},
		enableInput: function() {
			$($('contact').parentNode.select('a.bn-submit')[0]).onclick = Decon.contactSend;
			for( var p in this.Parameters) {
				$($('contact')[p]).readOnly = false;
				$($('contact')[p]).disabled = false;
			}
		}
	}
}
var Decon = {
	subMenu: 0,
	init: function() {
		$('container').focus();
		DeconOptions.lang = ($$('meta[name=language]')[0]) ? $($$('meta[name=language]')[0])['content'] : $($$('meta[http-equiv=content-language]')[0])['content'];
		$$('ul#menu li').each(function(e) {
			$(e.getElementsByTagName('a')[0]).addClassName("js");
		});
		$$('ul#menu>li').each(function(e) {
			var a = $(e.getElementsByTagName('a')[0]);
			if(!a.hasClassName('sel')) {
				a.onmouseover = Decon.mainMenuOver;
				a.onmouseout = Decon.mainMenuOut;
			}
			a.onclick = Decon.subMenuClose;
		});
		$$('ul#menu li ul li a').each(function(e) {
			e.onmouseover = Decon.subMenuOver;
			e.onmouseout = Decon.subMenuOut;
		});
		$$('ul#menu li ul').each(function(e) {
			$(e).addClassName('js');
			if(e.parentNode.hasClassName('sub')) {
				$(e.previousSiblings()[0]).onclick = Decon.subMenuOpen;
				e.hide();
			} else {
				Decon.subMenu = $(e.ancestors()[0]);
				$(e.previousSiblings()[0]).onmouseover = null;
				$(e.previousSiblings()[0]).onmouseout = null;
			}
		});
	},
	mainMenuOver: function(e) {
		new Effect.Morph(this, {
			duration: DeconOptions.Animation.Duration,
			delay: DeconOptions.Animation.Delay,
			style: { paddingLeft: DeconOptions.Padding.active, color: DeconOptions.Color.active, width: DeconOptions.Width.active },
			queue: { position: 'front', scope: this.toString() }
		});
	},
	mainMenuOut: function(e) {
		new Effect.Morph(this, {
			duration: DeconOptions.Animation.Duration,
			delay: DeconOptions.Animation.Delay,
			style: { paddingLeft: DeconOptions.Padding.inactive, color: DeconOptions.Color.inactive, width: DeconOptions.Width.inactive },
			queue: { position: 'end', scope: this.toString() }
		});
	},
	subMenuOver: function(e) { 
		new Effect.Morph(this, {
			duration: DeconOptions.Animation.Duration,
			delay: DeconOptions.Animation.Delay,
			style: { backgroundPosition: '0px 7px' },
			queue: { position: 'front', scope: this.toString() }
		});
	},
	subMenuOut: function(e) {
		new Effect.Morph(this, {
			duration: DeconOptions.Animation.Duration,
			delay: DeconOptions.Animation.Delay,
			style: { backgroundPosition: '-4px 7px' },
			queue: { position: 'end', scope: this.toString() }
		});
	},
	subMenuOpen: function(e) {
		if(Decon.subMenu) {
			new Effect.BlindUp($(Decon.subMenu.descendants()[1]), {
				duration: DeconOptions.Animation.Duration,
				delay: DeconOptions.Animation.Delay,
				afterFinish: function() {
					$(Decon.subMenu).addClassName('sub');
					new Effect.Morph($(Decon.subMenu.descendants()[0]), {
						duration: DeconOptions.Animation.Duration,
						delay: DeconOptions.Animation.Delay,
						style: { paddingLeft: DeconOptions.Padding.inactive, color: DeconOptions.Color.inactive, width: DeconOptions.Width.inactive },
						afterFinish: function() { document.location.href = li.descendants()[0].toString(); }
					});
				}
			});
		}
		this.onmouseout = null;
		var li = this.parentNode;
		new Effect.BlindDown($(li.descendants()[1]), {
			duration: DeconOptions.Animation.Duration,
			delay: DeconOptions.Animation.Delay,
			beforeStart: function(e) {
				$(e.element.ancestors()[0]).removeClassName('sub');
			},
			afterFinish: function(e) {
				if($($$('ul#menu>li>a.sel')[0])) {
					new Effect.Morph($($$('ul#menu>li>a.sel')[0]), {
						duration: DeconOptions.Animation.Duration,
						delay: DeconOptions.Animation.Delay,
						style: { paddingLeft: DeconOptions.Padding.inactive, color: DeconOptions.Color.inactive, width: DeconOptions.Width.active },
						afterFinish: function(e) { document.location.href = $(li.descendants()[0]).toString(); }
					});
				} else if(!Decon.subMenu) { document.location.href = $(e.element.previousSiblings()[0]).toString(); }
			}
		});
		return false;
	},
	subMenuClose: function(e) {
		this.onmouseout = null;
		var t = this.readAttribute('href').toString();
		if(Decon.subMenu != this.parentNode) {
			if(Decon.subMenu) {
				new Effect.BlindUp($(Decon.subMenu.descendants()[1]), {
					duration: DeconOptions.Animation.Duration,
					delay: DeconOptions.Animation.Delay,
					afterFinish: function() {
						$(Decon.subMenu).addClassName('sub');
						new Effect.Morph($(Decon.subMenu.descendants().first()), {
							duration: DeconOptions.Animation.Duration,
							delay: DeconOptions.Animation.Delay,
							style: { paddingLeft: DeconOptions.Padding.inactive, color: DeconOptions.Color.inactive, width: DeconOptions.Width.inactive },
							afterFinish: function() { document.location.href = t; }
						});
					}
				});
			} else {
				new Effect.Morph($($$('ul#menu>li>a.sel')[0]), {
					duration: DeconOptions.Animation.Duration,
					delay: DeconOptions.Animation.Delay,
					style: { paddingLeft: DeconOptions.Padding.inactive, color: DeconOptions.Color.inactive, width: DeconOptions.Width.inactive },
					afterFinish: function() { document.location.href = t; }
				});
			}
		} else {
			document.location.href = t;
		}
		return false;
	},
	contactSwitch: function(e) {
		var p = $(e.parentNode);
		var n = $(e).previous().readAttribute('href');
		var c = $('contact');

		if(c.visible()) {
			new Effect.SlideUp(c,{
				duration: .5,
				queue: 'end',
				afterFinish: function() {
					$(c.parentNode.select('a.bn-mail')[0]).show();
					$(c.parentNode.select('a.bn-url')[0]).show();
					c.remove();
					p.insert(c);
				}
			});
		} else {
			c.remove();
			p.insert(c);
		}
		/*if(p == $(c.parentNode)) {*/
		new Effect.SlideDown(c, {
			duration: .5,
			queue: 'end',
			beforeStart: function() {
				var s = $($$('a.bn-submit')[0]).remove();
						$(p.select('a.bn-mail')[0]).hide();
						$(p.select('a.bn-url')[0]).hide();
						p.insert(s);
						s.show();
			},
			afterFinish: function() {
				$($$('a.bn-submit')[0]).onclick = Decon.contactSend;
			}
		});
		$(c['target']).value = n;
		
		return false;
	},
	contactSend: function() {
		this.href = '#';
		DeconOptions.Contact.disableInput();
		if(DeconOptions.Contact.getInput()) {
			new Ajax.Request(
				DeconOptions.Contact.Url, {
					method: DeconOptions.Contact.Method,
					parameters:	DeconOptions.Contact.Parameters,
					onCreate: function(x) {
						// LOADING
						DeconOptions.Contact.disableInput();
					},
					onFailure: function(x) {
						// NO CONNECTION
						DeconOptions.Contact.enableInput();
						alert(DeconOptions.Contact.Message.NoConnection[DeconOptions.lang]);
					},
					onSuccess: function(r,x) {
						// SUCCESSFULL REQUEST
						if(r.responseText == 'true') {
							DeconOptions.Contact.enableInput();
							new Effect.SlideUp($('contact'), {
								duration: .5,
								afterFinish: function() {
									var c = $('contact');
									$(c.parentNode.select('a.bn-mail')[0]).show();
									$(c.parentNode.select('a.bn-url')[0]).show();
									$($$('a.bn-submit')[0]).hide();
									alert(DeconOptions.Contact.Message.Success[DeconOptions.lang]);
								}
							});
						} else {
							DeconOptions.Contact.enableInput();
							alert(DeconOptions.Contact.Message.Error[DeconOptions.lang]);
						}
					}
				}
			);
		} else {
			DeconOptions.Contact.enableInput();
			//$$('textarea')[0].parentNode.insert('<span id="errorMsg">' + DeconOptions.Contact.Message.MissingData[DeconOptions.lang].toString() + '</span>');
		}
		return false;
	}
}

window.onload = function() {
	Decon.init();
}
