window.addEvent('domready', function(){
	initPage();
	initSlideShow();
	initOpenClose();
	initScrollNav();
});

function initScrollNav(){
	var _animSpeed = 1100;
	var _nav = $('nav');
	_nav.getChildren().each(function(_el){
		var _link = _el.getElement('a');
		_link.addEvent('click', function(){
			var _slide = new SmoothScroll({ duration:2000, transition:'quad:in:out' }, window)
			return false;
		})
		window.addEvent('scroll', function(){
			if (window.getScroll().y + $('header').getSize().y >= $(_link.href.substr(_link.href.indexOf('#')+1)).getPosition().y && window.getScroll().y + $('header').getSize().y < $(_link.href.substr(_link.href.indexOf('#')+1)).getPosition().y + $(_link.href.substr(_link.href.indexOf('#')+1)).getSize().y) {
				_nav.getChildren().removeClass('active');
				_el.addClass('active');
			}
		})
	})
	$$('.scroll-link').each(function(_link){
		_link.addEvent('click', function(){
			var _slide = new SmoothScroll({ duration:2000, transition:'quad:in:out' }, window)
			return false;
		})
	})
	_nav.getChildren()[0].getElement('a').fireEvent('click');
}

// slideshow init
function initSlideShow() {
	$$('.slide').each(function(_holder){
		var _animSpeed = 1100;
		var _activeClass = 'active';
		var _slideEl = _holder.getElement('.slide-area ul')
		var _slides = _holder.getElements('.slide-area ul li');
		var _prev = _holder.getElement('.prev');
		var _next = _holder.getElement('.next');
		var _step = _slides[0].getSize().x;
		var _current = 0;
		var _animated = false;
		var _to, _effect;
		
		_slides.removeClass(_activeClass).setStyle('left', -99999);
		_slides[_current].addClass(_activeClass).setStyle('left', 0);

		function switchSlide(){
			_effect = new Fx.Morph(_slideEl, {
				duration: _animSpeed,
				onComplete: function(){
					_slides[_current].setStyles({
						'left':-99999
					})
					_slides[_current].removeClass(_activeClass)
					_current = _to;
					_animated = false;
					_slides[_to].setStyles({
						'left': 0
					})
					_slides[_to].addClass(_activeClass);
					_slideEl.setStyle('margin-left', 0);
				}
			})
		}
		
		
		function nextSlide(){
			_slides[_to].setStyles({
				'left':_step
			});
			switchSlide();
			_effect.start({
				'margin-left':-_step
			})
		}
		
		function prevSlide(){
			_slides[_to].setStyles({
				'left':0
			});
			_slides[_current].setStyles({
				'left':_step
			});
			_slideEl.setStyle('margin-left', -_step);
			switchSlide();
			_effect.start({
				'margin-left':0
			})
		}
		
		_next.addEvent('click', function(){
			if (!_animated) {
				_animated = true;
				_to = _current < _slides.length-1 ? _current + 1 : 0;
				_slides[_to].setStyle('z-index', 6);
				nextSlide();
			}
			return false;
		})
		
		_prev.addEvent('click', function(){
			if (!_animated) {
				_animated = true;
				_to = _current > 0 ? _current - 1 : _slides.length-1;
				_slides[_to].setStyle('z-index', 6);
				prevSlide();
			}
			return false;
		})
	})
}

function initOpenClose(){
	var _animSpeed = 700;
	$$('.openclose').each(function(_holder){
		var _slide = _holder.getElements('.slider');
		var _btn = _holder.getElement('.add');
		var _animated;
		
		_btn.addEvent('click', function(){
			_slide.each(function(_slideBlock){
				if (_slideBlock.getStyle('display') == 'none'){
					_slideBlock.setStyle('display', 'block');
					_slideBlock.h = _slideBlock.offsetHeight - parseInt(_slideBlock.getStyle('padding-top')) - parseInt(_slideBlock.getStyle('padding-bottom'));
					_slideBlock.setStyle('height', '0');
					var _open = new Fx.Morph(_slideBlock, {
						duration: _animSpeed,
						onComplete: function(){
							_holder.addClass('open');
						}
					}).start({'height':_slideBlock.h})
				}
				else {
					_slideBlock.h = _slideBlock.offsetHeight - parseInt(_slideBlock.getStyle('padding-top')) - parseInt(_slideBlock.getStyle('padding-bottom'));
					var _close = new Fx.Morph(_slideBlock, {
						duration: _animSpeed,
						onComplete: function(){
							_slideBlock.setStyles({
								'height':_slideBlock.h,
								'display':'none'
							})
							_holder.removeClass('open');
						}
					}).start({'height':0})
				}
			})
			return false;
		})
	})
}

function initPage()
{
	clearFormFields({
		clearInputs: true,
		clearTextareas: true,
		passwordFieldText: false,
		addClassFocus: "focus",
		filterClass: "default"
	});
}
function clearFormFields(o)
{
	if (o.clearInputs == null) o.clearInputs = true;
	if (o.clearTextareas == null) o.clearTextareas = true;
	if (o.passwordFieldText == null) o.passwordFieldText = false;
	if (o.addClassFocus == null) o.addClassFocus = false;
	if (!o.filterClass) o.filterClass = "default";
	if(o.clearInputs) {
		var inputs = document.getElementsByTagName("input");
		for (var i = 0; i < inputs.length; i++ ) {
			if((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass) == -1) {
				inputs[i].valueHtml = inputs[i].value;
				inputs[i].onfocus = function ()	{
					if(this.valueHtml == this.value) this.value = "";
					if(this.fake) {
						inputsSwap(this, this.previousSibling);
						this.previousSibling.focus();
					}
					if(o.addClassFocus && !this.fake) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				inputs[i].onblur = function () {
					if(this.value == "") {
						this.value = this.valueHtml;
						if(o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);
					}
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
				if(o.passwordFieldText && inputs[i].type == "password") {
					var fakeInput = document.createElement("input");
					fakeInput.type = "text";
					fakeInput.value = inputs[i].value;
					fakeInput.className = inputs[i].className;
					fakeInput.fake = true;
					inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);
					inputsSwap(inputs[i], null);
				}
			}
		}
	}
	if(o.clearTextareas) {
		var textareas = document.getElementsByTagName("textarea");
		for(var i=0; i<textareas.length; i++) {
			if(textareas[i].className.indexOf(o.filterClass) == -1) {
				textareas[i].valueHtml = textareas[i].value;
				textareas[i].onfocus = function() {
					if(this.value == this.valueHtml) this.value = "";
					if(o.addClassFocus) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				textareas[i].onblur = function() {
					if(this.value == "") this.value = this.valueHtml;
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
			}
		}
	}
	function inputsSwap(el, el2) {
		if(el) el.style.display = "none";
		if(el2) el2.style.display = "inline";
	}
}
// MooTools: the javascript framework.
// Load this file's selection again by visiting: http://mootools.net/more/8fbd98e3c6cb839a2c8178c5f66d0319 
// Or build this file again with packager using: packager build More/Fx.SmoothScroll
/*
---
copyrights:
  - [MooTools](http://mootools.net)

licenses:
  - [MIT License](http://mootools.net/license.txt)
...
*/
MooTools.More={version:"1.3.2.1",build:"e586bcd2496e9b22acfde32e12f84d49ce09e59d"};(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c);
this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this);
this.addEvent("start",function(){d.addEvent("mousewheel",e);},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e);},true);}},set:function(){var b=Array.flatten(arguments);
if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])];}this.element.scrollTo(b[0],b[1]);return this;},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b);
});},start:function(c,d){if(!this.check(c,d)){return this;}var b=this.element.getScroll();return this.parent([b.x,b.y],[c,d]);},calculateScroll:function(g,f){var d=this.element,b=d.getScrollSize(),h=d.getScroll(),j=d.getSize(),c=this.options.offset,i={x:g,y:f};
for(var e in i){if(!i[e]&&i[e]!==0){i[e]=h[e];}if(typeOf(i[e])!="number"){i[e]=b[e]-j[e];}i[e]+=c[e];}return[i.x,i.y];},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0));
},toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false));},toRight:function(){return this.start.apply(this,this.calculateScroll("right",false));
},toBottom:function(){return this.start.apply(this,this.calculateScroll(false,"bottom"));},toElement:function(d,e){e=e?Array.from(e):["x","y"];var c=a(this.element)?{x:0,y:0}:this.element.getScroll();
var b=Object.map(document.id(d).getPosition(this.element),function(g,f){return e.contains(f)?g+c[f]:false;});return this.start.apply(this,this.calculateScroll(b.x,b.y));
},toElementEdge:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y};
["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k];}if(f[k]<h[k]){i[k]=f[k];}}if(i[k]==null){i[k]=h[k];}if(e&&e[k]){i[k]=i[k]+e[k];
}},this);if(i.x!=h.x||i.y!=h.y){this.start(i.x,i.y);}return this;},toElementCenter:function(e,f,h){f=f?Array.from(f):["x","y"];e=document.id(e);var i={},c=e.getPosition(this.element),d=e.getSize(),b=this.element.getScroll(),g=this.element.getSize();
["x","y"].each(function(j){if(f.contains(j)){i[j]=c[j]-(g[j]-d[j])/2;}if(i[j]==null){i[j]=b[j];}if(h&&h[j]){i[j]=i[j]+h[j];}},this);if(i.x!=b.x||i.y!=b.y){this.start(i.x,i.y);
}return this;}});Fx.Scroll.implement({scrollToCenter:function(){return this.toElementCenter.apply(this,arguments);},scrollIntoView:function(){return this.toElementEdge.apply(this,arguments);
}});function a(b){return(/^(?:body|html)$/i).test(b.tagName);}})();var SmoothScroll=Fx.SmoothScroll=new Class({Extends:Fx.Scroll,options:{axes:["x","y"]},initialize:function(c,d){d=d||document;
this.doc=d.getDocument();this.parent(this.doc,c);var e=d.getWindow(),a=e.location.href.match(/^[^#]*/)[0]+"#",b=$$(this.options.links||this.doc.links);
b.each(function(g){if(g.href.indexOf(a)!=0){return;}var f=g.href.substr(a.length);if(f){this.useLink(g,f);}},this);this.addEvent("complete",function(){e.location.hash=this.anchor;
this.element.scrollTo(this.to[0],this.to[1]);},true);},useLink:function(b,a){b.addEvent("click",function(d){var c=document.id(a)||this.doc.getElement("a[name="+a+"]");
if(!c){return;}d.preventDefault();this.toElement(c,this.options.axes).chain(function(){this.fireEvent("scrolledTo",[b,c]);}.bind(this));this.anchor=a;}.bind(this));
return this;}});
