var router =
{
	page 	    : false,
	link 	    : false,
	glob_page   : false,  

	set_url:function(url)
	{
		history.pushState("", "", url) ;
		mobile.menu.hide() ;
		return false ;
	},
	set_glob_page:function(page)
	{
	    this.glob_page  = page ? page : "main" ;
	    o("window").className = "window "+ this.glob_page ;
	},
	ini:function()
	{
		this.link 	                = document.location.href ;
		var url 	                = this.url_parse(decodeURIComponent(document.location.href)) ;
		this.page 	                = this.get_model_from_map(url.path[1]) ;
		history.scrollRestoration   = "manual"
		this.set_glob_page(url.path[1]) ;
		setInterval(function(){router.route()}, 50) ;
	},
	get_model_from_map:function(n)
	{
		if(typeof(n) != "undefined" && n)
		{
			for(x in this.map)
			{
				if(n == this.map[x].link)
				{
					return this.map[x].path ;
				}
			}
		}

		return 'pages/main/main' ;
	},
	url_parse:function(url)
	{
		var url = url || document.location.href ;
		
		var a = ["http://","https://"] ;
	 	for(x in a)url = url.replace(new RegExp(a[x],"g"), "") ;

	 	url = url.split("?") ;
	   	var path = url[0].split("/") ;
		var pars = {};
		if(typeof(url[1]) != "undefined" && url[1])
		{
			var b = url[1].split("&") ;
			for(x in b)
			{
				var c = b[x].split("=") ;
				pars[c[0]] = (typeof(c[1]) != "undefined") ? c[1] : "" ;
			}
		}

		return {path:path, query:pars} ;
	},
	route:function()
	{
    	var url 	= this.url_parse(decodeURIComponent(document.location.href)) ;
        var page 	= this.get_model_from_map(url.path[1]) ;
        
        if(this.link != document.location.href)
        {
        	this.link = document.location.href ;
            this.set_glob_page(url.path[1]) ;
            
            
        	if(typeof(window.page) != "undefined" && typeof(window.page.router) != "undefined" && this.page == page)
	        {
	        	window.page.router();
	        }
        	else
	        {
	        	window.page = {} ;
	        	if(this.glob_page != "service")
	        	{
	        	    header.catalogs.main.unselect(); 
	        	}
	        	return ajax.rq({t:"n", m:page, f:"show", c:"content",e:"if(typeof(page.construct) != 'undefined')page.construct();"},{url_data:this.url_parse()});
	        }
        }

        this.page = page ;
	}
}