var myScroll;

window.addEvent('domready', function(){

	HistoryManager.initialize();
	
	var hrefs = $('container').getElements('a[href^=page_show]')
 	var currentIndex = -1;
 	var req = new Request.HTML({
		method: 'get',
		//url: el.get('href'),
		data: { 'action' : 'ajax' },
		evalScripts: false, // don't ask mootools to process js
		evalResponse: false, // we will process it manually
		//onRequest: function() { alert('Request made. Please wait...'+req.url); },
		onSuccess: function(rTree, rElements, rHTML, rJS) {
            if ($('page').innerHTML == '') previous = false;
            
            else previous = true;
			
			flowPage($('page'),rHTML,previous);
            //$('page').set('html',rHTML);
			//$('content').adopt(html);
			//hrefs.extend = rElements.getElements('a[href^=page_show]')

			var last = hrefs.length;

			$exec(rJS);
			//setLinks($('content'));
		}
		
		//update: $('content'),
		//onComplete: function(response) { alert('Request completed successfully.');
		//}
	});

	var reqHistory = HistoryManager.register(
		'/',
		[0], // default, page 0
		function(values) {
			ajaxUpdate(values[0]);
		},
		function(values) {
			return '/' + values[0][0] + '/' + values[0][1] + '';
		},
		/\/(\d+)/ // the regexp to match "page-index(0)"
	);
    
    function flowPage(page,content,previous){
        var myEffect = new Fx.Morph(page, {duration: 'short', transition: Fx.Transitions.Sine.easeOut});
        if(previous){
            myEffect.start({
                'opacity': [1,0]
            });
            var timeout = 700;
        } else {
            var timeout = 0;
        }
        
        setTimeout(function(){
            page.set('html', content);
			resizeContent();
            myEffect.start({
                'opacity': [0,1]
            });
            hrefs.extend($('page').getElements('a[href*=page_show]'));
			hrefs.each(function(el, i){
                el.addEvent('click', function(e) {
                    if (e) new Event(e).stop();
                    ajaxUpdate(i);
                });
			});
			myScroll = new MooScroll({});
        }.bind(this),timeout);
    };
 
	/**
	 * Loads the url (by index) if the index is valid and not the current page
	 */
	function ajaxUpdate(index) {

		var url = new Object;
        if (hrefs[index]){
            url.href = hrefs[index].getProperty('href') || null;
        
            url.splitted = url.href.replace('.html', '').split('_');
            url.file = url.splitted[0];
            url.action = url.splitted[1];
            url.page = url.splitted[2];
            //url.menu = url.splitted[3];
            //url.submenu = url.splitted[4];

            var activeMenus = $('menu').getElements('.active');
			var allMenus = $('menu').getElements('a');
            if (!activeMenus.length){
                var urlArray = url.href.split('_',4);
                var mainMenu = urlArray[0]+'_'+urlArray[1]+'_'+urlArray[2]+'_'+urlArray[3];
                activeMenu = $('menu').getElements('a[href^='+mainMenu+']');
				
				if(activeMenu[0] && activeMenu[0].getParent().getProperty('id')!='urb'){
					activeMenu[0].addClass('active');
					activeMenu[0].getElement('img').setProperty('src', '../image_database/menu_a/'+activeMenu[0].getAttribute('link'));
					if (activeMenu.getNext()[0]){
						Menu.currentElement = activeMenu.getNext()[0].getChildren()[0];
						Menu.open_menu();
						activeMenu.getNext()[0].getChildren()[0].getElements('.active').removeClass('active');
						activeMenu.getNext()[0].getChildren()[0].getElements('a[href^='+url.href+']').addClass('active');
					}
				}
            }
        }
		if (!url.href || (currentIndex == index)) return;
 
		// fancy state change with classes
		if(hrefs[index].getParent().getProperty('class') == 'menuitem'){
			hrefs.removeClass('active');
			hrefs[index].addClass('active');
		}//else if(url.menu.length > 0){
			//hrefs.removeClass('active');
		//}

		currentIndex = index;
 
		// updating the history
		reqHistory.setValue(0, [index, url.href]);
		// $('menu').getElements('a').each(function(el){
		//		if(el.hasClass('active')){
		//			el.getElement('img').setProperty('src', '../image_database/menu_a/'+el.getAttribute('link'));
		//		}else{
		//			el.getElement('img').setProperty('src', '../image_database/menu/'+el.getAttribute('link'));
		//		}
		//		//alert(el.getElement('img').getProperty('src'));
		//	});
		// request
		req.options.url = url.href;
		req.send();

	};

	hrefs.each(function(el, i) {
		el.addEvent('click', function(e) {
			if (e) new Event(e).stop();
			this.blur();
			ajaxUpdate(i);
		});
	});
	//hrefs[0].fireEvent('click');

	HistoryManager.start();
});