var SiteSection = new Class({
	Implements: [Events],
	initialize: function(__i, __element, __hash) {
		this.index		= __i;
		this.element	= __element;
		this.hash		= __hash;
		
		this.setup();
	},
	
	name			: '',
	pages			: [],
	pageTitles		: [],
	currentPage		: -1,
	upBtn			: 0,
	downBtn			: 0,
	upLink			: 0,
	downLink		: 0,
	scrollContent	: 0,
	
	setup: function() {
		this.name			= this.element.get('class');
		this.upBtn			= this.element.getChildren('#upBtn');	//div
		this.downBtn		= this.element.getChildren('#downBtn');	//div
		this.upLink			= this.element.getElements('#upLink');	//a
		this.downLink		= this.element.getElements('#downLink');	//a
		
		this.scrollContent	= this.element.getChildren('.scrollContent');
		
		var subarray		= [];
		var titles			= [];
		this.element.getChildren('div > article').each(function(subel){
			subarray.push(subel);
			var headline = String(subel.getChildren('h2').get('text')).toLowerCase();
			titles.push(headline);
		});
		
		this.pages		= subarray;
		this.pageTitles	= titles;
		
		this.gotoPage(0);
	},
	
	hashChange: function(_parsedPath) {
		//log('_parsedPath = ' + _parsedPath);
		//log('SiteSection.hashChange() _parsedPath = ' + _parsedPath);
		//var i	= this.pageTitles.indexOf(String(_parsedPath).replace('-', ' '));
		if (_parsedPath) {
			var i	= this.pageTitles.indexOf(this.urlToTitle( String(_parsedPath) ));
			this.gotoPage(i);
		} else {
			hashnav.navigateTo(this.hash, SUBPAGE_STRING + '=' + this.titleToUrl( String(this.pageTitles[this.currentPage]) ));
		}
	},
	
	urlToTitle: function(_url) {
		var title = _url.replace(REGEX_URL_TO_TITLE, ' ');
		return title;
	},
	
	titleToUrl: function(_title) {
		var url = _title.replace(REGEX_TITLE_TO_URL, '-');
		return url;
	},
	
	gotoPrevPage: function() {
		if (this.currentPage > 0) {
			//hashnav.navigateTo(this.hash, SUBPAGE_STRING + '=' + String(this.pageTitles[this.currentPage-1]).replace(' ', '-'));
			hashnav.navigateTo(this.hash, SUBPAGE_STRING + '=' + this.titleToUrl( String(this.pageTitles[this.currentPage-1]) ));
		}
	},
	gotoNextPage: function() {
		if (this.currentPage < this.pageTitles.length - 1) {
			hashnav.navigateTo(this.hash, SUBPAGE_STRING + '=' + this.titleToUrl( String(this.pageTitles[this.currentPage+1]) ));
		}
	},
	
	gotoPage: function(_i) {
		if (_i != this.currentPage) {
			if (_i < 0) _i = 0;
			this.currentPage		= _i;
			this.moveToPage();
			this.updateNavButtons();
		}
	},
	
	moveToPage: function() {
		var toTop			= -Math.round( windowHeight * this.currentPage );
		
		if (SUPPORT_3D_TRANSFORMS) {
			this.scrollContent.setStyle(CSS_TRANSFORM_PREFIXED, 'translate3d(0,' + toTop + 'px, 0)');
		} else if (SUPPORT_TRANSFORMS) {
			this.scrollContent.setStyle(CSS_TRANSFORM_PREFIXED, 'translate(0,' + toTop + 'px)');
		} else {
			this.scrollContent.animateStyle('margin-top', toTop + 'px' );
		}
		
		//this.element.getElements('.scrollContent').animateStyle('margin-top', toTop + 'px' );
	},
	updateNavButtons: function() {
		
		var prevPage	= ''
		var nextPage	= ''
		
		if (this.currentPage == 0) {
			this.upBtn.setStyle('visibility', 'hidden');
		} else {
			prevPage	= this.pageTitles[this.currentPage-1];
			this.upBtn.setStyle('visibility', 'visible');
			this.upLink.set('text', TO_ARTICLE_TEXT + prevPage);
		}
		
		if (this.currentPage == this.pageTitles.length-1) {
			this.downBtn.setStyle('visibility', 'hidden');
		} else {
			nextPage	= this.pageTitles[this.currentPage+1];
			this.downBtn.setStyle('visibility', 'visible');
			this.downLink.set('text', TO_ARTICLE_TEXT + nextPage);
		}
		
		var downUrl	= this.titleToUrl(nextPage);
		var upUrl	= this.titleToUrl(prevPage);
		
		this.downLink.set('href', '#!/' + this.hash + '&&' + SUBPAGE_STRING + '=' + downUrl);
		this.downLink.set('title', TO_ARTICLE_TEXT + nextPage);
		
		this.upLink.set('href', '#!/' + this.hash + '&&' + SUBPAGE_STRING + '=' + upUrl);
		this.upLink.set('title', TO_ARTICLE_TEXT + prevPage);
	},
	
	onResize: function(_w, _h) {
		//var windowWidth		= _w;
		//var windowHeight	= _h;
		
		this.scrollContent.setStyle('height', Math.round( _h * this.pages.length ) + 'px');
		
		for (var j=0, submax=this.pages.length; j<submax; j++) {
			var article	= this.pages[j];
			var height	= article.getSize().y;
			
			var containerHeight	= _h - HEADER_HEIGHT;
			var startY			= HEADER_HEIGHT + (_h * j);
			
			var toTop	= Math.round( startY + ((containerHeight * .5) - (height * .5)) );
			article.setStyle('top', toTop + 'px')
		}
		
		this.moveToPage();
	},
	
	isMovingIn: function() {
		//when going to page, check if url subpage part needs updating
		//hashnav.navigateTo(this.hash, SUBPAGE_STRING + '=' + this.titleToUrl( String(this.pageTitles[this.currentPage]) ));
	}
	
});
