var Site = Class.create({
	options: {
		multiplier:		123,
		seperator:		'#',
		animDuration:	.3
	},
	initialize: function() {
		document.getElementById('wrapper').focus();
		//alert(this.doHash('<form method="post" action="" accept-charset="utf-8" name="kontakt"><input class="input" type="text" title="Firma" value="Firma" name="firma"/><input class="input" type="text" title="Name" value="Name" name="name"/><input class="input" type="text" title="Strasse" value="Strasse" name="strasse"/><input class="input" type="text" title="PLZ, Ort" value="PLZ, Ort" name="plz-ort"/><input class="input" type="text" title="E-Mail" value="E-Mail" name="email"/><input class="input" type="text" title="Telefon" value="Telefon" name="telefon"/><textarea class="input" title="Nachricht" name="nachricht">Nachricht</textarea><input class="hidden" type="hidden" value="false" name="schadenmeldung"/><a class="button schadenmeldung" href="#">Schadenmeldung</a><div style="display: none;"><input class="input" type="text" title="Versicherungsnummer" value="Versicherungsnummer" name="vnummer"/><input class="input" type="text" title="amtliches Kennzeichen" value="amtliches Kennzeichen" name="kennzeichen"/></div><input class="button submit disabled" type="submit" value="" name="absenden" disabled="disabled"/></form>'));
		// URL-ANCHOR CORRECTION
		//alert(document.URL.substring(document.URL.lastIndexOf('#') + 1));
		if(this.tel = $(document.URL.substring(document.URL.lastIndexOf('#') + 1))) {
			$('wrapper').scrollTop = 0;
			new Effect.Tween($('wrapper'), 0, this.tel.offsetTop + 20, 'scrollTop');
		}
		// UNHASH ALL HASH-ELEMENTS
		$$('span.toHash').each((function(el) {
			el.update(this.unHash(el.title));
			el.title = '';
		}).bind(this));
		// TOGGLE ALL ANSWER-ELEMENTS
		$$('div.answer').each((function(el) {
			el.setStyle({ paddingLeft: '15px' });
			var h3	= el.previous();
				if(h3 == this.tel) {
					el.show();
					this.mnd = this.tel.next('div.answer');
				}
				h3.setStyle({
					cursor: 'pointer',
					paddingLeft: '15px',
					background: 'url(/media/img/bg-nav-arr-'+((h3 == this.tel) ? 'utb' : 'ltr')+'.gif) no-repeat 0px 2px transparent'
				});
				h3.onmouseover = (function() {
					h3.setStyle({ color: '#000' });
				}).bind(this);
				h3.onmouseout = (function() {
					h3.setStyle({ color: '#3b3b40' });
				}).bind(this);
				h3.onclick = (function() {
					this.h3click(el);
				}).bind(this);
		}).bind(this));
		// MAKE ANSWER-ANCHORS TOGGLING
		$$('ul.first .last a', '.anchorlink').each((function(el) {
			el.rel = el.getAttribute('href').toString()
			el.rel = el.rel.substring(el.rel.lastIndexOf('#') + 1);
			el.href = "#";
			var tel = $(el.rel) || $('container-content');
			el.onclick = (function() {
				new Effect.Tween($('wrapper'), $('wrapper').scrollTop, (tel.offsetTop - ((el.rel == 'container-content') ? 180 : -30)), 'scrollTop');
			}).bind(this);
		}).bind(this));
		// FORM CONTROLS
		$$('form input[type=text]', 'form textarea').each((function(el) {
			el.onfocus = (function() {
				this.formCheck(el);
				if(el.tagName == 'TEXTAREA' && el.innerHTML == el.title) {
					el.value = '';
				} else if(el.value == el.title)
					el.value = '';
			}).bind(this);
			el.onblur = (function() {
				this.formCheck(el);
				if(el.tagName == 'TEXTAREA' && el.innerHTML.blank()) {
					el.value = el.title;
				} else if(el.value.blank())
					el.value = el.title;
			}).bind(this);
			el.onkeyup = (function() {
				this.formCheck(el);
			}).bind(this);
		}).bind(this));
		// maybe ADDITIONAL FIELDS in DIV
		var ela = $($$('form a')[0]);
		if(ela) {
			ela.onclick = (function() {
				Effect.toggle(ela.next(), 'blind', {
					duration: .3,
					afterFinish: (function() {
						this.formCheck(ela);
						$(ela.up('form').select('.hidden')[0]).value = ela.next().visible().toString();
					}).bind(this)
				});
			}).bind(this);
		}
		// maybe ERROR MESSAGES
		$$('.error').each((function(el) {
			new Effect.Fade(el, { duration: .3, delay: 5 });
		}).bind(this));
	},
	h3click: function(el) {
		if(!el.visible()) {
			if(this.mnd) {
				new Effect.BlindUp(this.mnd, { duration: .3 });
				this.mnd.previous().setStyle({
					background: 'url(/media/img/bg-nav-arr-ltr.gif) no-repeat 0px 2px transparent'
				});
			}
			this.mnd = el;
			new Effect.BlindDown(el, { duration: .3 });
			el.previous().setStyle({
				background: 'url(/media/img/bg-nav-arr-utb.gif) no-repeat 0px 2px transparent'
			});
		}
	},
	formCheck: function(el) {
		var complete = new Array();
		el.up('form').select('.input:not([name~=firma])','textarea').each((function(d) {
			if(d.up().tagName == 'FORM' || (d.up().tagName == 'DIV' && d.up().visible())) {
				if(d.title != d.value && !d.value.blank()) {
					complete.push(true);
				} else {
					complete.push(false);
				}
			}
		}).bind(this));
		
		if(complete.uniq().length == 1 && complete.uniq().first()) {
			el.up('form').down('.submit').disabled = false;
			el.up('form').down('.submit').removeClassName('disabled');
		} else {
			el.up('form').down('.submit').disabled = true;
			el.up('form').down('.submit').addClassName('disabled');
		}
	},
	unHash: function(args) {
		var rs	= new Array();
		var ls	= args.split(this.options.seperator);
		
		for(var j = 0; j < ls.length; j++) {
			rs.push(String.fromCharCode(ls[j] - this.options.multiplier));
		}
		return(rs.join(''));
	},
	doHash: function(args) {
		var rs = new Array();
		for(var i = 0; i < args.length; i++) {
			rs[i] = new String();
			for(var j = 0; j < args[i].length; j++) {
				rs[i] += args[i].charCodeAt(j) + this.options.multiplier;
			}
		}
		return(rs.join(this.options.seperator));
	}
});
