
	var calendarHTML       = "";
	var constructionHTML   = "";

	var calendarLock       = 1;
	var timeDelay          = 0;
	var previousDay        = 0;
	var previousTipDay     = 0;
	var timeDelayForth     = 200;
	var timeDelayBack      = 800;

	var imagesFolder       = "/files/images/construct/";
	var image = new Image();

	var extImagesFolder    = "/files/images/exterior/";
	var ext_image = new Image();
	var ext_image_body = new Image();

	var defaul_roof = "222";
	var defaul_wall = "beige";

	var extSwitchLock = 0;

	var parentitemRoof;
	var parentitemWall;

	var key               = 1;
	var totalFrames       = 16;
	var presentDay        = 16;
	var everyDay          = new Array(totalFrames);
	var everyDayTip       = new Array(totalFrames);
	var everyDayPicture   = new Array(totalFrames);

	everyDay[1]  = "старт";
	everyDay[4]  = "<span>1</span> день";
	everyDay[7]  = "<span>2</span> день";
	everyDay[10] = "<span>3</span> день";
	everyDay[13] = "<span>11</span> день";
	everyDay[16] = "финал";

	everyDayTip[1]  = "Для начала строительных работ подготовлен фундамент будущего дома.";
	everyDayTip[4]  = "Начинаются строительные работы. Устанавливаются стены первого этажа, сооружается эркер.";
	everyDayTip[7]  = "Устанавливаются <a href=\"#time5\" onclick=\"time(5);\">перекрытия первого этажа</a>, ведутся работы по установке подкровельных <a href=\"#time7\" onclick=\"time(7);\">стен второго этажа</a>, фронтонов.";
	everyDayTip[10] = "Монтируются <a href=\"#time8\" onclick=\"time(8);\">подкровельные балки крыши</a>, устанавливаются <a href=\"#time9\" onclick=\"time(9);\">крыша дома</a> и эркера, <a href=\"#time10\" onclick=\"time(10);\">козырьки</a> крыльца и гаража.";
	everyDayTip[13] = "Проводятся <a href=\"#time11\" onclick=\"time(11);\">кровельные</a> и <a href=\"#time12\" onclick=\"time(12);\">фасадные</a> работы, <a href=\"#time13\" onclick=\"time(13);\">монтаж водостоков</a>, инженерная разводка, внутренние отделочные работы.";
	everyDayTip[16] = "Ваш новый дом готов! Запускаете кошку, вносите вещи, собираете мебель. Не забудьте позвать родных и близких на новоселье.";

	everyDayPicture[1]  = "16.png" + "?" + Math.random() * 10000;
	everyDayPicture[2]  = "15.png" + "?" + Math.random() * 10000;
	everyDayPicture[3]  = "14.png" + "?" + Math.random() * 10000;
	everyDayPicture[4]  = "13.png" + "?" + Math.random() * 10000;
	everyDayPicture[5]  = "12.png" + "?" + Math.random() * 10000;
	everyDayPicture[6]  = "11.png" + "?" + Math.random() * 10000;
	everyDayPicture[7]  = "10.png" + "?" + Math.random() * 10000;
	everyDayPicture[8]  = "09.png" + "?" + Math.random() * 10000;
	everyDayPicture[9]  = "08.png" + "?" + Math.random() * 10000;
	everyDayPicture[10] = "07.png" + "?" + Math.random() * 10000;
	everyDayPicture[11] = "06.png" + "?" + Math.random() * 10000;
	everyDayPicture[12] = "05.png" + "?" + Math.random() * 10000;
	everyDayPicture[13] = "04.png" + "?" + Math.random() * 10000;
	everyDayPicture[14] = "03.png" + "?" + Math.random() * 10000;
	everyDayPicture[15] = "02.png" + "?" + Math.random() * 10000;
	everyDayPicture[16] = "01.png" + "?" + Math.random() * 10000;

	function timeshift(_day) {
		if (!calendarLock) {
			calendarRefresh(_day);
			startStep = presentDay;
			endStep = _day;
			if (startStep > endStep) {
				step = 1;
				timeDelay = timeDelayForth;
			} else {
				step = -1;
				timeDelay = timeDelayBack;
			}
			presentDay = _day;
			shift();
		}
	}

	function shift() {
		if (startStep != endStep) {
			if (1 == step) document.getElementById("frame" + (1 + totalFrames - startStep)).className = "hide";
			startStep -= step;
			if (-1 == step) document.getElementById("frame" + (1 + totalFrames - startStep)).className = "";
			calendarLock = 1;
			t = setTimeout('shift()', timeDelay);
			displayLanes(startStep);
		} else {
			calendarLock = 0;
			clearTimeout(t);
			//calendarRefresh(startStep);
			document.getElementById("tips").innerHTML = everyDayTip[startStep];
		}
	}

	function displayLanes(_num) {
		if (_num >= 13) {
			document.getElementById("lanes").style.display = "block";
		} else {
			document.getElementById("lanes").style.display = "none";
		}
	}

	function displayTodayBuilding() {
		for (i = 1; i <= presentDay; i++) {
			document.getElementById("frame" + i).className = "";
			displayLanes(i);
		}		
	}

	function time(_frame) {
		presentDay = _frame;
		displayLanes(_frame);
		_frame = 17 - _frame;
		if (previousTipDay) { document.getElementById("frame" + previousTipDay).className = "hide"; }
		previousTipDay = _frame;
		for (i = 1; i <= totalFrames; i++) {
			if (_frame <= i) {
				document.getElementById("frame" + i).className = "";
			} else {
				document.getElementById("frame" + i).className = "hide";
			}
		}
	}
	
	function calendarRefresh(_presentDay) {
		if (previousDay) { document.getElementById("calendar" + previousDay).className = ""; }
		previousDay = _presentDay;
		document.getElementById("calendar" + _presentDay).className = "active";
		//document.getElementById("tips").innerHTML = everyDayTip[_presentDay];

		if (presentDay == _presentDay) {
			document.getElementById("tips").innerHTML = everyDayTip[presentDay];
		} else {
			document.getElementById("tips").innerHTML = "";
		}
	}

	function preloadCalendar() {
		image.src = imagesFolder + everyDayPicture[key];
		image.onload = function() {
			loadImages();
		}
	}

	function loadImages() {
			if (1 == key % 3) {
				calendarHTML += "<li id=\"calendar" + key + "\"><a href=\"#day" + key + "\" onclick=\"timeshift(" + key + "); return false;\">" + everyDay[key] + "</a></li>";
				calendarObj.innerHTML = calendarHTML;
			}
			if (3 == key) {
				constructionHTML += "<div style=\"left: -30px; z-index: " + (1 + totalFrames - key) + "; background: url('" + image.src + "') bottom left no-repeat;\" class=\"hide\" id=\"frame" + key + "\"></div>";
			} else if (1 == key) {
				constructionHTML += "<div style=\"top: 80px; left: 235px; z-index: " + (1 + totalFrames - key) + "; background: url('" + image.src + "') bottom left no-repeat;\" class=\"hide\" id=\"frame" + key + "\"></div>";
			} else {
				constructionHTML += "<div style=\"z-index: " + (1 + totalFrames - key) + "; background: url('" + image.src + "') bottom left no-repeat;\" class=\"hide\" id=\"frame" + key + "\"></div>";
			}
			constructionObj.innerHTML = constructionHTML;
			key++;
			if (key <= totalFrames) {
				preloadCalendar();
			} else {
				calendarLock = 0;
				displayTodayBuilding();
				calendarRefresh(presentDay);
			}
	}

	function initialize() {
		calendarObj = document.getElementById("calendar");
		constructionObj = document.getElementById("construction");
		preloadCalendar();		
	}

	function initialize_exterior() {
		ext_Body = document.getElementById("background");
		ext_groups = document.getElementById("materials");

		ext_image_body.src = extImagesFolder + "ext_body.gif" + "?" + Math.random() * 10000;

		ext_image_body.onload = function() {
			if (IE || IE7) {
				ext_Body.style.background = "url('" + ext_image_body.src + "') left bottom no-repeat";
			} else {
				ext_Body.setAttribute("style", "background: url('" + ext_image_body.src + "') left bottom no-repeat;");
			}
			document.getElementById("lanes").style.display = "block";
			document.getElementById("wall").style.display = "block";
			document.getElementById("roof").style.display = "block";
		}

		items_list = ext_groups.getElementsByTagName('DIV');
		for(i = 0; i < items_list.length; i++) {
			if("item" == items_list[i].className) {
				for (item_child in items_list[i].childNodes) {
					if("A" == items_list[i].childNodes[item_child].tagName) {
						if(defaul_roof == items_list[i].childNodes[item_child].id) {
							items_list[i].className = "item active";
							parentitemRoof = items_list[i];
							ext_Roof = document.getElementById("roof");
							if (IE || IE7) {
								ext_Roof.style.background = "url('" + extImagesFolder + defaul_roof + ".png') left bottom no-repeat";
							} else {
								ext_Roof.setAttribute("style", "background: url('" + extImagesFolder + defaul_roof + ".png') left bottom no-repeat;");
							}
						}

						if(defaul_wall == items_list[i].childNodes[item_child].id || defaul_roof == items_list[i].childNodes[item_child].id) {
							items_list[i].className = "item active";
							parentitemWall = items_list[i];
							ext_Wall = document.getElementById("wall");
							if (IE || IE7) {
								ext_Wall.style.background = "url('" + extImagesFolder + defaul_wall + ".png') left bottom no-repeat";
							} else {
								ext_Wall.setAttribute("style", "background: url('" + extImagesFolder + defaul_wall + ".png') left bottom no-repeat;");
							}
						}
					}
				}
			}
		}

	}

	function placewall(img, id) {
		if (!extSwitchLock) {
			itemClass = id.parentNode;
			if ("item" == itemClass.className) {
				itemClass.className = "item active";
				changeExteriorWallPic(img);
			}
			if (parentitemWall && parentitemWall != itemClass) {
				parentitemWall.className = "item";
			}
			parentitemWall = itemClass;
		}
	}

	function placeroof(img, id) {
		if (!extSwitchLock) {
			itemClass = id.parentNode;
			if ("item" == itemClass.className) {
				itemClass.className = "item active";
				changeExteriorRoofPic(img);
			}
			if (parentitemRoof && parentitemRoof != itemClass) {
				parentitemRoof.className = "item";
			}
			parentitemRoof = itemClass;
		}
	}

	function changeExteriorRoofPic(ext_img) {
		extSwitchLock = 1;
		ext_Roof = document.getElementById("roof");
		ext_img = extImagesFolder + ext_img + ".png" + "?" + Math.random() * 10000;

		document.getElementById("attention").style.display = "block";

		ext_image.src = ext_img;
		ext_image.onload = function() {
			document.getElementById("attention").style.display = "";
			if (IE || IE7) {
				ext_Roof.style.background = "url('" + ext_img + "') left bottom no-repeat";
			} else {
				ext_Roof.setAttribute("style", "background: url('" + ext_img + "') left bottom no-repeat;");
			}
		ext_Roof.style.display = "block";
		extSwitchLock = 0;
		}
	}

	function changeExteriorWallPic(ext_img) {
		extSwitchLock = 1;
		ext_Wall = document.getElementById("wall");
		ext_img = extImagesFolder + ext_img + ".png" + "?" + Math.random() * 10000;

		document.getElementById("attention").style.display = "block";

		ext_image.src = ext_img;
		ext_image.onload = function() {
			document.getElementById("attention").style.display = "";
			if (IE || IE7) {
				ext_Wall.style.background = "url('" + ext_img + "') left bottom no-repeat";
			} else {
				ext_Wall.setAttribute("style", "background: url('" + ext_img + "') left bottom no-repeat;");
			}
		ext_Wall.style.display = "block";
		extSwitchLock = 0;
		}
	}

	var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
	currentSheet, doc = window.document, hoverEvents = [], activators = {
		onhover:{on:'onmouseover', off:'onmouseout'},
		onactive:{on:'onmousedown', off:'onmouseup'}
	}

		function parseStylesheet(sheet) {
			if(sheet.imports) {
				try {
					var imports = sheet.imports, l = imports.length;
					for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
				} catch(securityException){}
			}

			try {
				var rules = (currentSheet = sheet).rules, l = rules.length;
				for(var j=0; j<l; j++) parseCSSRule(rules[j]);
			} catch(securityException){}
		}

		function parseCSSRule(rule) {
			var select = rule.selectorText, style = rule.style.cssText;
			if(!csshoverReg.test(select) || !style) return;

			var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
			var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
			var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
			var affected = select.replace(/:(hover|active).*$/, '');
			var elements = getElementsBySelect(affected);
			if(elements.length == 0) return;

			currentSheet.addRule(newSelect, style);
			for(var i=0; i<elements.length; i++)
				new HoverElement(elements[i], className, activators[pseudo]);
		}

	function HoverElement(node, className, events) {
		if(!node.hovers) node.hovers = {};
		if(node.hovers[className]) return;
		node.hovers[className] = true;
		hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
		hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
	}
		function hookHoverEvent(node, type, handler) {
			node.attachEvent(type, handler);
			hoverEvents[hoverEvents.length] = { 
				node:node, type:type, handler:handler 
			};
		}

		function unhookHoverEvents() {
			for(var e,i=0; i<hoverEvents.length; i++) {
				e = hoverEvents[i]; 
				e.node.detachEvent(e.type, e.handler);
			}
		}

	function getElementsBySelect(rule) {
		var parts, nodes = [doc];
		parts = rule.split(' ');
		for(var i=0; i<parts.length; i++) {
			nodes = getSelectedNodes(parts[i], nodes);
		}	return nodes;
	}
		function getSelectedNodes(select, elements) {
			var result, node, nodes = [];
			var identify = (/\#([a-z0-9_-]+)/i).exec(select);
			if(identify) {
				var element = doc.getElementById(identify[1]);
				return element? [element]:nodes;
			}
		
			var classname = (/\.([a-z0-9_-]+)/i).exec(select);
			var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
			var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
			for(var i=0; i<elements.length; i++) {
				result = tagName? elements[i].all.tags(tagName):elements[i].all; 
				for(var j=0; j<result.length; j++) {
					node = result[j];
					if(classReg && !classReg.test(node.className)) continue;
					nodes[nodes.length] = node;
				}
			}	
		
			return nodes;
		}

	function parseStylesheets() {
		if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
		window.attachEvent('onunload', unhookHoverEvents);
		var sheets = doc.styleSheets, l = sheets.length;
		for(var i=0; i<l; i++) 
			parseStylesheet(sheets[i]);
	}

	function resize() {
		block = document.getElementById("body");
		if (block) {
			block_resize();
			document.body.onresize = function() {
				style = "";
				block_resize();
			}
		}
	}

	function block_resize() {
		if (document.getElementById("gallery")) {
			// блокировка растяжения по горизонтали
			if (1400 < document.body.offsetWidth) {
				styleGallery = "fixed_max_width";
			} else if (994 > document.body.offsetWidth) {
				styleGallery = "fixed_min_width";
			} else {
				styleGallery = "defaultWidth";
			}
			//document.getElementById("gallery").className = styleGallery;
			block.className = styleGallery;

			if (975 > document.body.offsetHeight) {
				styleGallery = "fixed_height";
			} else {
				styleGallery = "flow_height";
			}

			//document.getElementById("gallery").innerHTML = styleGallery;
			document.getElementById("gallery").className = styleGallery;

		} else {
			// блокировка растяжения по горизонтали
			if (1400 < document.body.offsetWidth) {
				style = "fixed_max_width";
			} else if (994 > document.body.offsetWidth) {
				style = "fixed_min_width";
			} else {
				style = "defaultWidth";
			}

			if ("exterior" == window.name) {
				// блокировка сжатия по вертикали до 780 пкс
				if (785 > document.body.offsetHeight) {
					style += " fixed_height";
				} else {
					style += " flow_height";
				}
			} else {
				// блокировка сжатия по вертикали до 780 пкс
				if (975 > document.body.offsetHeight) {
					//alert("fixed_height " + document.body.offsetHeight);
					style += " fixed_height";
				} else {
					//alert("flow_height " + document.body.offsetHeight);
					style += " flow_height";
				}
			}

			//block.innerHTML = style + " " + document.body.offsetHeight;
			block.className = style;
		}
	}

	function updateLinks() {
		/* обработка ссылок с параметром rel="ext:имя_окна" */
		/* для обеспечения xhtml совместимости */
		var i = 0;
		var links_list;
		if (document.getElementsByTagName) {
			links_list = document.getElementsByTagName('a');
			for(i=0; i<links_list.length; i++) {
				if (0 == links_list[i].rel.indexOf('ext:')) {
					links_list[i].target = links_list[i].rel.substring(4, links_list[i].rel.length);
				}
			}
		}
	}

	function openLink(wlink, wd, hd) {
		/* открытие нового окна с заданными размерами в центре экрана */
		var pref = "stejadom";
		re = new RegExp("[^a-z0-9_]","g");

		namewindow = wlink.replace(re,'');
		window.open(wlink, pref + namewindow, "height=" + hd + ",width=" + wd + ",xposition=" + ((screen.width / 2) - (wd / 2)) + ",yposition=" + ((screen.height / 2) - (hd / 2)) + ",top=" + ((screen.height / 2) - (hd / 2)) + ",left=" + ((screen.width / 2) - (wd / 2)) + ",toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0");
	}

	function funct() {
		return false;
	}

	var mail_link;
	var icomail_name = 'info';
	var icomail_domain = '@stezja-dom.ru';
	var icomail_link_s = '<a href="mailto:' + icomail_name + icomail_domain + '">';
	var icomail_link_e = '</a>';
	mail_link = icomail_link_s + icomail_name + icomail_domain + icomail_link_e;

