/**
 * @author alltouch
 */

function Page(){
	this.top = null;
	
	this.params = null;
	
	var TreeBlock = null;
	
	this.getParams = function(pageName){
	
		var temp = pageName.split('&');
		var l = temp.length;
		var result = new Object();
		for (var i = 0; i < l; i++) {
			var t2 = temp[i].split('=');
			var l2 = t2.length;
			if (l2 == 1) {
				result[t2[0]] = true;
			}
			else 
				if (l2 == 2) {
					result[t2[0]] = t2[1];
				}
		}
		result['codeName'] = temp[0];
		
		if (!piro.chapters.cacheData.code[result.codeName]) {
			piro.log('bad code: ' + result.codeName);
		}
		else {
			result.pageid = piro.chapters.cacheData.code[result.codeName];

			if (!piro.chapters.cacheData.all[result.pageid]) {
				result.pageid = null;
				piro.log('bad code: ' + result.codeName);
			}
		}
		piro.page.params = result;
	}
	
	this.goFirst = function(){
		if(typeof PAGEID != 'undefined'){
			var el = piro.chapters.cacheData.all[PAGEID];
			if(!el){
				el = piro.chapters.cacheData.all[piro.chapters.cacheData.main[0]];
			} else{
				PAGEID = false;
			}
		} else {
			var el = piro.chapters.cacheData.all[piro.chapters.cacheData.main[0]];
		}
		if (!el) {
			piro.warning('что-то не так');
			return;
		}
		var link = 'pageid=' + el.id;
		if (el.codeName) {
			link = el.codeName;
		}
		$.historyLoad(link);
	}
	
	this.setTitle = function(){
		var tempData = piro.chapters.cacheData.all;
		var temp = tempData[piro.page.params.pageid];
		if(!temp){
			return ;
		}
		
		var txt = '';
		
		if (!temp.parent) {
			txt = temp.title;
			document.title = txt;
			return;
		}
		
		txt = temp.title;
		
		while (true) {
			temp = tempData[temp.parent];
			if (!temp.parent) 
				break;
			
			txt = temp.title + ' - ' + txt;
		}
		
		txt = temp.title + ' - ' + txt;
		
		document . title = txt;
	}
	
	this.setPath = function(){
		var tempData = piro.chapters.cacheData.all;
		var temp = tempData[piro.page.params.pageid];
		if(!temp){
			return ;
		}
		
		var txt = '';
		var txt2 = '';
		
		if (!temp.parent) {
			TreeBlock.css('visibility', 'hidden')
			return;
		}
		else {
			TreeBlock.css('visibility', 'visible')
		}
		
		txt = '<b>' + temp.title + '</b>';
		
		while (true) {
			temp = tempData[temp.parent];
			if (!temp.parent) 
				break;
			
			var link = 'pageid=' + temp.id;
			if (temp.codeName) {
				link = temp.codeName;
			}
			txt = '<a href="#' + link + '">' + temp.title + '</a>' + txt;
		}
		
		var link = 'pageid=' + temp.id;
		if (temp.codeName) {
			link = temp.codeName;
		}
		txt = '<a class="first" href="#' + link + '">' + temp.title + '</a>' + txt;
		
		TreeBlock.html(txt);
	}
	
	this . go = function(pageName){
		
		window.scrollTo(0,0);
		
		piro . alert . clear();
		piro . dpopup . hide();
		
		piro . page . MakePage(pageName);
		
		if($.cookie('registerSuccess')){
			piro . alert . loadCustom ('registerSuccess');
			
    		$.cookie('registerSuccess', null);
		}
		
		if($.cookie('rememberSuccess')){
			piro . alert . loadCustom ('rememberSuccess');
			
    		$.cookie('rememberSuccess', null);
		}
		
	}
	
	this.MakePage = function(pageName){

		if (pageName == '') {
			piro.page.goFirst();
			return;
		}
		
		
		piro.page.getParams(pageName);
		if (!piro.page.params.pageid || !piro.chapters.cacheData.all[piro.page.params.pageid] ) {
			piro.page.goFirst();
			return;
		}
		else {
			piro.page.info = piro.chapters.cacheData.all[piro.page.params.pageid];
			/*if(piro.page.info.autoclick && piro.page.info.autoclick > 0){
				$.historyLoad('pageid=' + piro.page.info.autoclick);
				return;
			}*/

			piro.auth.initViewSettings(piro.page.info.type == 'catalog' || piro.page.info.codeName == 'search');
		}
		
		piro . page . setTitle();
		
		if (!piro.news.cache) {
			piro.news.loadBlock(); // в  будущем иногда нужно обновлять новости
		}
		
		$('#MenuPage').removeClass('menu-page admin-page report-page');
		$('#body').removeClass('empty-page');

		try {
			pageTracker._trackPageview('/' + piro.page.info.path);
		}catch(e){}
		
		try {
			yaCounter.hit('/' + piro.page.info.path);
		}catch(e){}
		
		piro.page.top = piro.chapters.getTopItem(piro.page.params.pageid);
		piro.chapters.setActiveTab(piro.page.top);
		piro.page.setPath();
		
		if (piro.page.params.register) {
			piro.loading.hidePage('register');
			$('#pageTree').css('visibility', 'hidden')
			$('#body').load('/templates/register.html', '0', function(){
				
				piro.call('InitRegisterPage');
				piro . call('InitFormFields');
				piro . loading . showPage('register');
				piro . call('NeedResize');
			});
			return;
		}
		
		if (piro.page.params.forgot) {
			piro.loading.hidePage('forgot');
			$('#pageTree').css('visibility', 'hidden')
			$('#body').load('/templates/forgot.html', '0', function(){
				
				piro . call('InitForgotPage');
				
				piro.loading.showPage('forgot');
				piro . call('NeedResize');
			});
			return;
		}
		
		if (piro.page.params.remember) {
			
			if(!piro . page . params . token || piro . page . params . token . length < 10 ){
				piro . page . goFirst();
			}
			piro.stat.load(piro.page.params.pageid);

			$('#pageTree').css('visibility', 'hidden');
			piro . call('NeedResize');
				
			return;
		}
		
		if (piro.page.params.news || piro . page . params . pageid == 317) {
			if (piro.page.params.itemid) {
				piro.news.loadItem(piro.page.params);
			}
			else {
				piro.news.loadList(piro.page.params);
			}
			piro.leftmenu.make();
			piro . call('NeedResize');
			return;
		}
		
		if (piro.page.params.order) {
			piro.loading.hidePage('order');
			$('#pageTree').css('visibility', 'hidden')
			$('#body').load('/templates/order.html', '0', function(){
				var txt = '';
				var t = 0;
				for(var i = 0; i<24; i++){
					t = i;
					if(t<10){
						t = '0' + i;
					}
					txt += '<option value="' + t + ':00">' + t + ':00</option>';
					txt += '<option value="' + t + ':30">' + t + ':30</option>';
				}
				$('#f_from,#f_to').append(txt);
				piro.cash.setTableAll();
				
				piro . call('InitDateShowFields');
				piro . call('NeedResize');
				piro . call('InitFormFields');
				piro.loading.showPage('order');
			});
			return;
		}
		
		if (piro.page.params.profile || piro.page.params.pageid == 374) {
			piro.loading.hidePage('profile');
			
			$('#body').load('/templates/profile.html', '0', function(){
				piro . auth . hideProfileFields();
				piro . auth . setUserOptions(piro . auth . cache . userinfo);
				
				piro . call('InitProfilePage')
				
				piro.loading.showPage('profile');
				piro . call('NeedResize');
				piro . call('InitFormFields');
			});
			piro.leftmenu.make();
			piro . call('InitTreeBlock');
			return;
		}
		
		if (piro.page.params.search) {
			piro.leftmenu.make(74);
			piro.catalog.search(piro.page.params);
			if (piro.page.params.query) {
				$('#pageTree').css('visibility', 'visible').html('<a class="first" href="#search">Поиск</a> <b>' + piro.page.params.query + '</b>');
			} else {
				$('#pageTree').css('visibility', 'visible').html('<a class="first" href="#search">Поиск</a>');
			}		
			piro . call('InitTreeBlock');	
			piro . page . resize();
			return;
		}
		
		if (piro.page.info.type == 'articles') {
			piro . articles . loadList( piro . page . params . pageid,  piro . page . params . pageNumber);
			piro . leftmenu . make();
			piro . call('InitTreeBlock');
			return;
		}
		
		if (piro.page.info.type == 'static') {
			piro.stat.load(piro.page.params.pageid);
			piro.leftmenu.make();
			piro . call('InitTreeBlock');
			piro . call('InitFormFields');
			return;
		}
		
		if (piro.page.info.type == 'admin') {
			piro.admin.load({'pageid' : piro.page.params.pageid});
			piro.leftmenu.make();
			if(piro.page.params.pageid == 365){
				$('#MenuPage').addClass('report-page');
			} else {
				$('#MenuPage').addClass('admin-page');
			}
			piro . call('InitTreeBlock');
			return;
		}
		
		if (piro.page.info.type == 'menu') {
			piro.menubody.load(piro.page.params.pageid);
			piro . call('InitTreeBlock');
			piro . call('NeedResize');
			piro.loading.hidePage('menu');
			
			$('#banner-right').load('/ajax/banner.php', '0', function(){
				piro.loading.showPage('menu');
			});
			
			return;
		}
		
		if (piro.page.info.type == 'catalog') {
			piro.catalog.load(piro.page.params);
			piro.leftmenu.make();
			piro . call('InitTreeBlock');
			return;
		}			
		
		piro.page.clear();
	}
	
	this.clear = function(){
		$('#body').html('');
	}
	
	this.init = function(){
	
		piro . trigger . init();
		piro . loading . init();
		piro . chapters . init();
		piro . catalog . init();
		piro . auth . init();
		piro . cash . init();
		piro . order . init();
		piro . leftmenu . init();
		piro . alert . init();
		piro . dpopup . init();
		
		
		piro . call('NeedResize');
		piro . call('InitSite');
		
		
		TreeBlock = $('#pageTree');
		
		$.historyInit(function(hash){
			piro.page.go(hash);
		});
		
		if (location.hash == '') {
			this.go('');
		}
		
	}
	
	this . resize = function(){
		var wrapper = $('#wrapper'); 
		var s = wrapper.width();
		if (s < 1100) {
			wrapper . children('.bg-center').show();
			wrapper . children('.bg-center-big').hide();
		}
		else {
			wrapper . children('.bg-center') . hide();
			wrapper . children('.bg-center-big') . show();
		}
		
		var b = $('body').width();
		wrapper . children('.stars-right') . css('width',(b-s)/2 + 'px');
		
		wrapper . height('auto');
		
		var w = wrapper.height();
		var wb = $(window).height();
		if(w < wb ){
			//wrapper . height(wb);
		}
		
		piro . page . correctTabs();
		
		var cashBlock = $('#RightColumn');
		if(cashBlock.width() == 240){
			cashBlock.children().eq(0) . addClass('showTable');
		} else {
			cashBlock.children().eq(0) . removeClass('showTable');
		}		
		
		$('#MenuColumn').width(Math.min($('#MenuColumn').parent().width()*.19,240) + 'px');
		$('#fixedCash').width(Math.min($('#fixedCash').parent().width()) + 'px');
		try{
			if(piro.cash.cacheData.items.length > 0){
				$('#fixedCash').css('position','absolute')
				$('#RightColumn form').css('padding-top',$('#fixedCash').height() + 'px')				
			} else {
				$('#fixedCash').css('position','static')
				$('#RightColumn form').css('padding-top','0px')
			}
		}
		catch(e){
			$('#fixedCash').css('position','static')
			$('#RightColumn form').css('padding-top','0px')
		}
	}
	this . correctTabs = function(){
		$('#tab82short').hide();
		$('#tab82').show();
		var s = $('#tabs');
		if (s.width() + s.prev().width() + 30 > s.parent().width()) {
			$('#tab82short').show();
			$('#tab82').hide();
		}
	}
}

piro . page = new Page();


