var menuSelected = 0;
var site_is_run=0;

/* Раздел Каталоги, слайдшоу */
var slideshow_id = false;
var j = 0; // индекс текщей отображаемой картинки в слайдшоу раздела каталоги
var catalog_photos = new Array(); // массив путей к фотографиям слайдшоу
var catalog_previews = new Array(); // массив путей к превьюшкам
var preload_stack={}; // глобальный стек закгрузки
var cf = new Array(); // массив уже загруженных объектов (картинок)
var ind_cf = 0; // количество загруженных объектов (индекс массива cf)

/* Слайдшоу на главной странице */
var maingallery_id = false;
var imgs = new Array();
var sf = new Array();
var ind = 0;

var site_start_count_imgs=4;	//	сколько картинок предгружать перед показам сайта

function showSlideshowCatalog()
{


	if(maingallery_id)		// 4 ajax enter case #design
		{
		clearTimeout(maingallery_id);
		maingallery_id = false;
		}

				
    count = cf.length;			
    if(j == count) j = 0;

    curr_photo = cf[j];
    next_photo = (j+1 == count) ? cf[0] : cf[j+1];
    $(curr_photo).fadeOut(2000);
    $(next_photo).fadeIn(2000);

    j++;
}

function placePhoto(url)
	{
	$('#content').fadeOut(500);
    /*
    window.setTimeout( function ()
                       {
                            $('#content').html('<img src="'+url+'" />');
                            $('#content').fadeIn(500);
                       }
                     , 500);*/
    
    
    if(preload_stack[url])
	    {
		window.setTimeout( function ()
                       {
                       		$("#img_loader").show();
                            
                            var _img=document.createElement("img");
                              	
                                	
                        	_img.onload=function(){
                        		$("#img_loader").hide();
                        		$('#content').fadeIn(500);
                        		};
                        		
                        	_img.src=url;
                            $('#content').html('').append(_img);
                       }
                     , 500);
                     
        delete_from_stack(url);            
    	}
   	else
	   	window.setTimeout( function ()
                       {
                            $('#content').html('<img src="'+url+'" />');
                            $('#content').fadeIn(500);
                       }
                     , 500);
                                		

	   	
	
	}


function over(elem)
{
    $(elem).fadeTo(50, 0.5);
}

function out(elem)
{
    $(elem).fadeTo(50, 1);
}

function toggleSubmenu()
{
    $("#submenu").slideToggle();
    return false;
}


function mapsLoaded()
{
    var map = new google.maps.Map2(document.getElementById("google_map"));
    //map.setCenter(new google.maps.LatLng(54.97954699779303, 82.89388418197632), 16);
    map.setCenter(new google.maps.LatLng(55.03937188325944,82.89500534534454), 16);
    map.setUIToDefault();


    // Прямоугольник — это простой объект наложенной графики, очерчивающий на карте область определенной широты и долготы.
    // Прямоугольник может также иметь полупрозрачный цвет фона

    function Rectangle(bounds)
    {
        this.bounds_ = bounds;
    }

    Rectangle.prototype = new GOverlay();

    // Создает объект DIV, представляющий данный прямоугольник.
    Rectangle.prototype.initialize = function(map)
    {
        // Создание объекта DIV, представляющего данный прямоугольник
        var div = document.createElement("div");
        div.style.background = "url(img/logo_for_google.png) no-repeat";
        div.style.position = "absolute";
        div.style.width = "120px";
        div.style.height = "27px";


        // Наш прямоугольник располагается в плоскости карты, поэтому мы добавляем его в панель MAP_PANE, z-порядок которой равен z-порядку карты (то есть меньше, чем z-порядок теней маркеров)
        map.getPane(G_MAP_MAP_PANE).appendChild(div);

        this.map_ = map;
        this.div_ = div;
    }

    //Удаление главного объекта DIV с панели карты
    Rectangle.prototype.remove = function()
    {
        this.div_.parentNode.removeChild(this.div_);
    }

    // Копирование данных в новый прямоугольник
    Rectangle.prototype.copy = function()
    {
        return new Rectangle(this.bounds);
    }

    // Прямоугольник пересоздается на основании действующей проекции и текущего масштаба
    Rectangle.prototype.redraw = function(force)
    {
        // Его нужно пересоздавать только в случае, если изменилась система координат
        if (!force) return;

        // Вычисление координат объекта DIV двух противоположных углов границы прямоугольника для получения его размера и позиции
        var c1 = this.map_.fromLatLngToDivPixel(this.bounds_.getSouthWest());
        var c2 = this.map_.fromLatLngToDivPixel(this.bounds_.getNorthEast());

        // Теперь нужно расположить объекты DIV в соответствии с координатами DIV границ
        this.div_.style.right = c2.x + "px";
        this.div_.style.top = c2.y + "px";
        this.div_.style.left = (c2.x - 120) + "px";
        this.div_.style.bottom = (c2.y + 27) + "px";
    }

    var rectBounds = new GLatLngBounds(
                        new GLatLng(55.03890817450172, 82.89429199085235), // y, x
                        new GLatLng(55.03930817450172, 82.89420199085235)
            );
         /*   
            //old
    var rectBounds = new GLatLngBounds(
                        new GLatLng(54,97908328903531, 82,89437082748413), // y, x
                        new GLatLng(54,97948328903531, 82,89428082748413)
            );
            
            
    //map.setCenter(new google.maps.LatLng(54,97954699779303, 82,89388418197632), 16);
    
    map.setCenter(new google.maps.LatLng(55,03937188325944,82,89500534534454), 16);            
            */

    map.addOverlay(new Rectangle(rectBounds));
}

function loadMaps()
{
    google.load("maps", "2", {"callback" : mapsLoaded});
}


function loadContent(id_as_url,is_timeout)
	{
	var updateText=is_timeout?0:1;
	
    if(id_as_url == 18)	//design
    	{
    	/*
    	if(!site_is_run)	// проверяем загружены ли все фотки для слайдшоу, если ещё нет, грузим
    		setTimeout("loadContent(" + id_as_url + ",1);", 1000);
        else*/ 
    	if(ind_cf < catalog_photos.length)
        	{
            //console.log("Загружено " + ind_cf + " фотографий из " + catalog_photos.length + "!");
            if($("#content").is(":visible"))
                $("#content").fadeOut(1000, function(){
                    $("#img_loader").show();
                });
           	setTimeout("loadContent(" + id_as_url + ",1);", 1000);
           	
           	if(!preload_run)	
           		{
           		play_preloading();
				recursive_preloading();
				//console.log("START!");
           		}
        	}
        else
        	{
        	if(maingallery_id)
				{
				 clearTimeout(maingallery_id);
			     maingallery_id = false;
				}
				
            $("#content").fadeOut(1000, function()
            	{
                $("#img_loader").hide();
                $("#content").html('<div id="slideshow"></div>');

                if(slideshow_id)
                	{
                    clearInterval(slideshow_id);
                    j = 0;
                	}

                for(i=0; i < catalog_photos.length; i++)
                    $("#slideshow").append(cf[i]);

                $("#slideshow img").hide();
                $(cf[0]).css("display", "block");
                slideshow_id = setInterval(showSlideshowCatalog, 4000);
                $("#content").fadeIn(1000,showSite_);
            	});
        	}
    	}
    else if(id_as_url == 9)	//contacts
    	{
		$("#content").fadeOut(1000, function(){
            $("#content").html('<div style="position: relative;"><div id="google_map" style="width: 521px; height: 521px; border: 1px solid #000;"></div><div style="position: absolute; bottom: 20px; right: 10px; border: 1px solid #000; background-color: #fff;"></div></div>');
            loadMaps();
            $("#content").fadeIn(1000,showSite_);
        });
    	}
    else if(id_as_url == 17)	//price
    	{
        $("#content").fadeOut(1000, function(){
            $("#content").html(js_content[id_as_url]);
            $("#content").fadeIn(1000,showSite_);
        });
    	}

    
        

    if(updateText) 
    	$("#text").slideUp(1000, function(){
                        $("#text").html(js_content_text[id_as_url]);
                        $("#text").slideDown(1000);
                    });


    need_to_show_text=0;
	}

function showFooter()
{
    if($(window).height() < 675)
    {
     $("#main div#contacts").addClass('small_screen');
     $("#main div#footer").addClass('small_screen');
     $("#main div#imdn").addClass('small_screen');
    }
    else
    {
     $("#main div#contacts").removeClass('small_screen');
     $("#main div#footer").removeClass('small_screen');
     $("#main div#imdn").removeClass('small_screen');
    }
}

var load_ajax_by_url=0;
var need_to_show_text=0;

function select_page(current_page_id)
    {
    if(/^#[a-z]+$/.test(self.location.hash))
        {
        var hash_curr_page=self.location.hash.substring(1,self.location.hash.length);

        for(var id in pages_arr)
            if(pages_arr[id]==hash_curr_page)
                {
                load_ajax_by_url=id;
                return;
                }
        }

    load_ajax_by_url=current_page_id||0;
    }

var big_img_preload_flag=0;
var preload_counter=0;
var preload_counter_length=0;

function wait_for_load(count,func)
	{
	if(preload_counter<count)
		setTimeout(function(){wait_for_load(count,func);},100);
	else
		{
		func();
		preload_counter=0;
		}
	}
	
        	
var i_ = 0;

function showGallery()
	{
    count = sf.length;
    if(i_ == count)
    	i_ = 0;

    curr_photo = sf[i_];
    next_photo = (i_+1 == count) ? sf[0] : sf[i_+1];

    $(curr_photo).fadeOut(2000);
    $(next_photo).fadeIn(2000);

    i_++;
	}

$(document).ready(function()
{
	setTimeout(function(){$("#loader a").show();},5000);
	
    $("a.menu").click(
        function()
        {
            if($(this).attr("id").indexOf("emulate")!=-1)
                {
                var id_=$(this).attr("id").split('_')[0].split('menu')[1];
                $("#menu"+id_).click();
                return false;
                }

            var this_href=$(this).attr("href");
            document.location.hash=document.location.pathname.indexOf(this_href)==-1?this_href.replace('.html',''):'';

            // stop main slideshow
            if(maingallery_id)
            	{
                clearTimeout(maingallery_id);
                maingallery_id = false;
            	}

            $("#img_loader").hide();
            $(".submenu").removeClass("active");

            // toggle menu Fotoalbum
            if($(this).attr("id") == "menu12")
            	{
                if(menuSelected != "menu12")
                    $("#"+menuSelected).animate({ color: "#a4a4a4", marginLeft: "0px" }, 200);

                if($("#submenu").is(":visible"))
                	{
                    $("#"+menuSelected).animate({ color: "#a4a4a4", marginLeft: "0px" }, 200);
                    menuSelected = 0;
                	}
                else
                	{
                    $("#menu12").animate({ color: "#f5811e", marginLeft: "-10px" }, 200); //4c4b4b
                    menuSelected = "menu12";
                	}

                $("#submenu").slideToggle();
                return false;
            	}

            if(menuSelected != $(this).attr("id"))
            	{
                $("#"+menuSelected).animate({ color: "#a4a4a4", marginLeft: "0px" }, 200);
                $(this).animate({ color: "#f5811e", marginLeft: "-10px" }, 200); //4c4b4b
                menuSelected = $(this).attr("id");
                loadContent($(this).attr("id").substring(4,$(this).attr("id").length));
            	}

            return false;
        }
    );

    $("a.menu").mouseover(
        function()
        {
            if($(this).attr("id") != menuSelected && $(this).attr("id").indexOf("emulate")==-1)
            {
                $(this).animate({ color: "#ffd400" }, 50); //4c4b4b
            }
        }
    );

    $("a.menu").mouseout(
        function()
        {
            if($(this).attr("id") != menuSelected && $(this).attr("id").indexOf("emulate")==-1)
            {
                $(this).animate({ color: "#a4a4a4" }, 50);
            }
        }
    );

    $("a.submenu").click(
        function()
        {
            if(menuSelected != "menu12")
            {
                $("#"+menuSelected).animate({ color: "#a4a4a4", marginLeft: "0px" }, 200);
                menuSelected = "menu12";
                $("#"+menuSelected).animate({ color: "#f5811e", marginLeft: "-10px" }, 200); //4c4b4b
            }

            $(".submenu").removeClass("active");
            $(this).addClass("active");

            $("#content").fadeOut(1000);

            $("#text").slideUp(1000);
            url = $(this).attr("href");

            pause_preloading();
            
            setTimeout(function()
                   {
                        $("#img_loader").show();
                        big_img_preload_flag=0;
 						preload_counter=0;
                        preload_counter_length=0;	
                         
                        
                         $.get("ajax/load_gallery_and_first_foto.php", { url: url },
                            function(data){
                            	
                            	eval(data);
                            	
								for(var kkk in ajax_data.imgs)
                                	preload_counter_length++;
                            	
                                $("#content").html('').show().css("visibility", "hidden");
                                $("#text").html('').show().css("visibility", "hidden");

                                //	create main img
                                
								var _img_ff=document.createElement("img");
							   
								_img_ff.alt='';
								_img_ff.onload=function(){
									$("#img_loader").hide();
									$("#content").hide().css("visibility", "visible").fadeIn(1000,showSite_);
                               		big_img_preload_flag=1;
                               		delete_from_stack(this.src);
                               		if(preload_counter==preload_counter_length)
                               			play_preloading();
                                	};
								_img_ff.src=ajax_data_ff;
									
								$(_img_ff).appendTo("#content");
								
								//	create main icons
								
								for(var kkk in ajax_data.imgs)
                                	{
                                	var _img=document.createElement("img");
                                	
                                	_img.alt='';
                                	_img.width='42';
                                	_img.height='42';
                                	_img.style.cursor='pointer';
                                	
                                	var big_src=ajax_data.PHOTOS_URL+'gallery/'+ajax_data.id+'/big/'+ajax_data.imgs[kkk];
                                	
                                	_img.onclick=function(x){ return  function() { 
											placePhoto(x);
                                		}}(big_src);
                                	
                                	_img.onmouseover=function(){over(this);};
                                	_img.onmouseout=function(){out(this);};
                                	_img.onload=function(){
                                		delete_from_stack(this.src);
                                		preload_counter++;
                                		if(preload_counter==preload_counter_length && big_img_preload_flag)
                                			play_preloading();
                                		};
                                	_img.src=ajax_data.PHOTOS_URL+'gallery/'+ajax_data.id+'/'+ajax_data.imgs[kkk];
                                	
                                	delete_from_stack(_img.src);
                                	pop_item_to_stack_top(big_src);
                                	
                                	var _div=$('<div class="photo"></div>');
                                	
                                	$(_div).appendTo("#text");
                                	$(_img).appendTo(_div);
                                	
                                	if((parseInt(kkk)+1)%3 == 0) 
                                		$("<br clear='all' />").appendTo("#text");
                                	}
                                	
                                wait_for_load(preload_counter_length,function(){$("#text").hide().css("visibility", "visible").slideDown(1000);})
                            });
                   }
            , 1000);

            return false;
        }
    );

    var mt='mail'+'@'+'focusfoto.ru';
    $('#email').attr('href','mailto:'+mt);
    $('.email').attr('href','mailto:'+mt).html(mt);
	js_content_text[9]=js_content_text[9].replace('nobox','mail').replace('nobox','mail');
});

//		preloading

preload_stack_length=0;

function start_preloading()
	{
	if(load_ajax_by_url!=18)
		for(var i = 0; i < catalog_previews.length; i++)
			preload_stack[catalog_previews[i]]=1;
		
	for(var i = 0; i < catalog_photos.length; i++)
		preload_stack[catalog_photos[i]]=2;

	if(load_ajax_by_url==18)
		for(var i = 0; i < catalog_previews.length; i++)
			preload_stack[catalog_previews[i]]=1;
		
	for(var i = 0; i < imgs.length; i++)
		preload_stack[imgs[i]]=3;
/*
	for(var i in preload_stack)
		console.log(i);
	*/	
	preload_stack_length=catalog_previews.length+catalog_photos.length+imgs.length;
	
	preload_main_images();
	}

function preload_main_images()
	{
	for(var i=0; i<=site_start_count_imgs; i++)
	    {
		var img = new Image();
		
		$(img).css({
		        position: 'absolute',
		        display: 'none',
		        top: 0,
		        left: 0
		    }).find('img').css({
		        border: 0
		    });
		
		$(img).load(function()
		    {
	        sf[ind++] = this;
	        $("#slideshow").append(this);
	        
	        if(ind < site_start_count_imgs) 
				$("#progressbar").progressbar('option', 'value', Math.round(ind*100/site_start_count_imgs));
	        else if(ind == site_start_count_imgs)
				showSite();
		    });
		    
		  delete_from_stack(imgs[i]);
		  img.src = imgs[i];
	    }
	}
	
var preload_run=0;

function play_preloading()
	{
	if(preload_stack_length)
		preload_run=1;	
	}
	
function pause_preloading()
	{
	preload_run=0;	
	}

function recursive_preloading()
	{	
	if(!preload_stack_length)
		{
		preload_run=0;
		//console.log("STOP");
		}	
	else if(!preload_run)
		{
		setTimeout(recursive_preloading,2000);
		//console.log("PAUSE");
		}
	else
		{
		var new_img = new Image();
		
		for(var i in preload_stack)	//	do only 1 step & return
			{
			//console.log("Осталось " + preload_stack_length + ", грузим: " + i + "");
			//$('#global_container_2').html($('#global_container_2').html()+"Осталось " + preload_stack_length + ", грузим: " + i + "<br />");
						
			if(preload_stack[i]==1)			//	ico
				{
				$(new_img).load(function()
				    {
			       	launch_recursive_preloading();
				    });						
				}
			else if(preload_stack[i]==2)	//	design
				{
				$(new_img).css({
				        position: 'absolute',
				        display: 'none',
				        top: 0,
				        left: 0
				    }).find('img').css({
				        border: 0
				    });
		    
				$(new_img).load(function()
				    {
			       	cf[ind_cf++] = this;
			       	launch_recursive_preloading();
				    });							
				}
			else if(preload_stack[i]==3)	//	main
				{
				$(new_img).css({
				        position: 'absolute',
				        display: 'none',
				        top: 0,
				        left: 0
				    }).find('img').css({
				        border: 0
				    });
				    
				$(new_img).load(function()
				    {
			        sf[ind++] = this;
			        $("#slideshow").append(this);
			        launch_recursive_preloading();
				    });						
				}
				
			
			delete_from_stack(i);
			new_img.src=i;
			
			return;
			}
		}
	}

function launch_recursive_preloading()
	{
	//recursive_preloading();
	setTimeout(recursive_preloading,50);		
	}

	
function delete_from_stack(index)
	{
	if(preload_stack[index])
		{
		delete preload_stack[index];
		preload_stack_length--;
		}
	}
	
function pop_item_to_stack_top(index)
	{
	if(preload_stack[index])
		{
		var tmp={};
		tmp[index]=preload_stack[index];
		
		delete preload_stack[index];
		
		for(var i in preload_stack)
			tmp[i]=preload_stack[i];
			
		preload_stack=tmp;
		}
	}
	
$(window).resize(showFooter);