$(function(){
	new function(){
		var name_space = 'address';
		var self = window[name_space] || {};
		window[name_space] = self;
		
		var _page;
		var _isFirst = true;
		
		function _onAddressChange(event){
			if(!event) return;
			if(!event.path){
				_page = null;
				if(_isFirst) _isFirst = false;
				else _scrollTo(0);
				
				return;
			}
			try{
				var p = event.path;
				if(p == '/') {
					if(_isFirst) _isFirst = false;
					else _scrollTo(0);
					return;
				}
				
				var page = p.split('/')[1];
				_page = page;
				_scrollTo(_getOffset(page));
			}catch(e){}
		}
		
		function _scrollTo(targetOffset){
			var ah = utils.getDocHeight() - $(window).height();
			var h = (targetOffset > ah) ? ah : targetOffset;
			$('html,body').stop().animate({ scrollTop: h }, 1000, 'easeInOutQuart', function(){
				if(!ie) $(window).scroll();
			});
		}
		
		function _getOffset(page){
			if(!$('#'+page)) return 0;
		
			if(page == 'top') {
				return 0;
			}else{
				return $('#'+page).offset().top;;
			}
		}
		
		//public API
		self.init = function(){
			var owner = this;
			SWFAddress.addEventListener(SWFAddressEvent.CHANGE, function(event){
				_onAddressChange(event);
			});
		}
		
		self.setTitle = function(title){
			SWFAddress.setTitle(title);
		}
		
		self.setPage = function(page){
			var isIE = (ie);
			var isIE6 = (ie === 6);
			if(isIE && !isIE6){
				if(page == 'top') {
					_scrollTo(0);
					return;
				}
				var targetOffset = $('#'+page).offset().top;
				location.hash = '/'+page;
				_scrollTo(targetOffset);
				return;
			}
			
			if(_page == page) _scrollTo(_getOffset(page));
			
			SWFAddress.setValue('/'+page);
			window.blur();
			window.focus();
		}
		
		
		
		self.getValue = function(){
			return SWFAddress.getValue();
		}
	}
});

