var QueryLoader = {
	/*
	 * QueryLoader		Preload your site before displaying it!
	 * Author:			Gaya Kessler
	 * Date:			23-09-09
	 * URL:				http://www.gayadesign.com
	 * Version:			1.0
	 * 
	 * A simple jQuery powered preloader to load every image on the page and in the CSS
	 * before displaying the page to the user.
	 */
	
	overlay: "",
	loadBar: "",
	preloader: "",
	items: new Array(),
	doneStatus: 0,
	doneNow: 0,
	selectorPreload: "body",
	ieLoadFixTime: 2000,
	ieTimeout: "",
		
	init: function() {
		if (navigator.userAgent.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/) == "MSIE 6.0,6.0") {
			//break if IE6			
			return false;
		}
		if (QueryLoader.selectorPreload == "body") {
			QueryLoader.spawnLoader();
			QueryLoader.getImages(QueryLoader.selectorPreload);
			QueryLoader.createPreloading();
		} else {
			$(document).ready(function() {
				QueryLoader.spawnLoader();
				QueryLoader.getImages(QueryLoader.selectorPreload);
				QueryLoader.createPreloading();
			});
		}
		
		//help IE drown if it is trying to die :)
		QueryLoader.ieTimeout = setTimeout("QueryLoader.ieLoadFix()", QueryLoader.ieLoadFixTime);
	},
	
	ieLoadFix: function() {
		var ie = navigator.userAgent.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/);
		if (ie) {
		if (ie[0].match("MSIE")) {
			while ((100 / QueryLoader.doneStatus) * QueryLoader.doneNow < 100) {
				QueryLoader.imgCallback();
			}
		}
		}
	},
	
	imgCallback: function() {
		QueryLoader.doneNow ++;
		QueryLoader.animateLoader();
	},
	
	getImages: function(selector) {
		var everything = $(selector).find("*:not(script)").each(function() {
			var url = "";
			
			if ($(this).css("background-image") != "none") {
				var url = $(this).css("background-image");
			} else if (typeof($(this).attr("src")) != "undefined" && $(this).attr("tagName").toLowerCase() == "img") {
				var url = $(this).attr("src");
			}
			
			url = url.replace("url(\"", "");
			url = url.replace("url(", "");
			url = url.replace("\")", "");
			url = url.replace(")", "");
			
		
			if (url.length > 0 && !url.match(/counter.yadro/) ) {
				QueryLoader.items.push(url);
			}
		});
	},
	
	createPreloading: function() {
		QueryLoader.preloader = $("<div></div>").appendTo(QueryLoader.selectorPreload);
		$(QueryLoader.preloader).css({
			height: 	"0px",
			width:		"0px",
			overflow:	"hidden"
		});
		
		var length = QueryLoader.items.length; 
		QueryLoader.doneStatus = length;
		
		for (var i = 0; i < length; i++) {
			var imgLoad = $("<img></img>");
			$(imgLoad).attr("src", QueryLoader.items[i]);
			$(imgLoad).unbind("load");
			$(imgLoad).bind("load", function() {
				QueryLoader.imgCallback();
			});
			$(imgLoad).appendTo($(QueryLoader.preloader));
		}
	},

	spawnLoader: function() {
		if (QueryLoader.selectorPreload == "body") {
			var height = $(window).height();
			var width = $(window).width();
			var position = "fixed";
		} else {
			var height = $(QueryLoader.selectorPreload).outerHeight();
			var width = $(QueryLoader.selectorPreload).outerWidth();
			var position = "absolute";
		}
		var left = $(QueryLoader.selectorPreload).offset()['left'];
		var top = $(QueryLoader.selectorPreload).offset()['top'];
		
		QueryLoader.overlay = $("<div></div>").appendTo($(QueryLoader.selectorPreload));
		$(QueryLoader.overlay).addClass("QOverlay");
		$(QueryLoader.overlay).css({
			position: position,
			top: top,
			left: left,
			width: width + "px",
			height: height + "px"
		});
		
		QueryLoader.loadBar = $("<div></div>").appendTo($(QueryLoader.overlay));
		$(QueryLoader.loadBar).addClass("QLoader");
		
		$(QueryLoader.loadBar).css({
			position: "relative",
			top: "50%",
			width: "0%"
		});
	},
	
	animateLoader: function() {
		var perc = (100 / QueryLoader.doneStatus) * QueryLoader.doneNow;
		if (perc > 99) {
			$(QueryLoader.loadBar).stop().animate({
				width: perc + "%"
			}, 500, "linear", function() { 
				QueryLoader.doneLoad();
			});
		} else {
			$(QueryLoader.loadBar).stop().animate({
				width: perc + "%"
			}, 500, "linear", function() { });
		}
	},
	
	doneLoad: function() {
		//prevent IE from calling the fix
		clearTimeout(QueryLoader.ieTimeout);
		
		//determine the height of the preloader for the effect
		if (QueryLoader.selectorPreload == "body") {
			var height = $(window).height();
		} else {
			var height = $(QueryLoader.selectorPreload).outerHeight();
		}
		
		$('#viewport, .overlay').css('display','block');
		
		/* mini-map position after loading */
		var cursor_obj = $('.sitemap .in .cursor');
		var container_obj = $('.container');
		
		//var txx = Math.floor(Math.abs((container_obj.get(0).offsetLeft/28.55)*2.33)+24);
		//var tyy = Math.floor(Math.abs((container_obj.get(0).offsetTop/25.72)*2.33)+17);
		
		cursor_obj.get(0).style.left = '75px';
		cursor_obj.get(0).style.top = '104px';
		
		drag_by_minimap(76, 106);		
		
		if ($(".our_preferences .preferences_list .active").length==0) {
			$(".our_preferences dl dt a").each(function(){ if (preferences_max_width<$(this).width()) preferences_max_width = $(this).width();});
			$(".our_preferences .preferences_list").css("width",preferences_max_width+"px");
			$(".our_preferences .preferences_list, .our_preferences dl").css("float","none");
		}
		
		//The end animation, adjust to your likings
		setTimeout(function(){
			$(QueryLoader.loadBar).animate({
				height: height + "px",
				top: '0%'
			}, 500, "linear", function() {
				$(QueryLoader.overlay).fadeOut(800);
				$(QueryLoader.preloader).remove();
				
				setTimeout(function(){
					$(".overlay .space .sitemap").stop().animate({
						height: "276px"
					}, {
						"duration": 1000,
						"easing": "swing"						
					}).addClass("full");
					setTimeout(function(){
						$(".overlay .space .sitemap").stop().animate({
							height: "21px"
						}, {
							"duration": 1000,
							"easing": "swing"						
						}).removeClass("full");
						
						
					},2000);
					
				},1000);
			});
		},1500);
		
		//$('.metrika').append('<noindex><!--LiveInternet counter--><script type="text/javascript">document.write(\'<a href="http://www.liveinternet.ru/click" target=_blank><img src="http://counter.yadro.ru/hit?t16.1;r\' + escape(document.referrer) + ((typeof(screen)==\'undefined\')?\'\':\';s\'+screen.width+\'*\'+screen.height+\'*\'+(screen.colorDepth?screen.colorDepth:screen.pixelDepth)) + \';u\' + escape(document.URL) +\';i\' + escape(\'Жж\'+document.title.substring(0,80)) + \';\' + Math.random() + \'" border=0 width=88 height=31 alt="" title="LiveInternet: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодн\я"><\/a>\')</script><!--/LiveInternet--></noindex>');
	}
}
