$(document).ready(function(){

	var $menumain = $("#menumain");
	var colorHover = "#7f7f7f";
	var colorNormal = "#3f43a7";
	var subpos = new Array();
	var neighbourNum = 3;			// num = num - 1
	var neighbourDeltaMax = 15;		// отклонение соседнего пункта
	var mactive = 30;				// заступ открытого, верх-низ
	var mtnormal = 17;
	var mbnormal = 14;
	var itemHeight = 29;			// высота пункта
	var itemHeightFull = 60;
	var is_progress = false;		// процесс обработки клика
	$(".menumain-imgheader").show();
	$("#menumain > li").each(function(){
		subpos[detectIdNum(this.id)] = Math.round($(this).position().top);
	});
	
	$(".menumain-imgheader",$menumain)
		.click(function(){
			if(!is_progress) {
				is_progress = true;
				$("#menumain > li").each(function(){
					$(".menumain-sublist",$(this)).hide();
					$(".menumain-imgheader",$(this)).show();
				});
				$(this).hide();
				// выровнять все пункты
				alignMenuHeaders( detectIdNum($(this).parent().attr("id")) );
			}
		});
	//
	$(".menumain-x",$menumain).click(function(){
		var id = detectIdNum(this.id);
		$("#mi_"+id).hide();
		$(".menumain-imgheader", $("#mh_"+id)).show();
		// выровнять все пункты
		alignMenuHeaders();
		is_progress = false;
	});
	//
	$("#finder")
		.focus(function(){
			var $t = $(this);
			if($t.val() == "Поиск") {
				$t.val("");
			}
		})
		.blur(function(){
			var $t = $(this);
			if(!$t.val()) {
				$t.val("Поиск");
			}
		});
		
	$("#contact-address").click(function() {
		$("#roadmap").css("top",-$("#roadmap").height()).show().animate({"top":"50%"},500,"swing");
		$("#shader").fadeIn("fast");
		$("#roadmap-metro").hide();
		$("#roadmap-car").hide();
	});
	$("#contact-address1").click(function() {
		$("#roadmap").css("top",-$("#roadmap").height()).show().animate({"top":"50%"},500,"swing");
		$("#shader").fadeIn("fast");
		$("#roadmap-metro").hide();
		$("#roadmap-car").hide();
	});
	$("#roadmap-close").click(function() {
		$("#roadmap").animate({"top":-$("#roadmap").height()},250,"swing",function(){$("#roadmap").hide();});
		$("#shader").fadeOut("fast");
	});
	$("#shader").click(function() {
		$("#roadmap").animate({"top":-$("#roadmap").height()},250,"swing",function(){$("#roadmap").hide();});
		$("#feedback").animate({"top":-$("#feedback").height()},250,"swing",function(){$("#feedback").hide();});
		$("#shader").fadeOut("fast");
	});
	
	$("#roadmap-metro-control").click(function() {
		$("#roadmap-metro").toggle();
	});
	$("#roadmap-car-control").click(function() {
		$("#roadmap-car").toggle();
	});
	
	$("#contact-email").click(function() {
		$("#feedback").css("top",-$("#feedback").height()).show().animate({"top":"50%"},500,"swing");
		$("#shader").fadeIn("fast");
	});  
	$("#feedback-close").click(function() {
		$("#feedback").animate({"top":-$("#feedback").height()},250,"swing",function(){$("#feedback").hide();});
		$("#shader").fadeOut("fast");
	});
	
	
	function detectIdNum(id) {
		return id ? Number(id.split("_")[1]) : null;
	}

	function alignMenuHeaders(num) {
		$("#menumain > li").each(function(){
			var id = detectIdNum(this.id);
			var postop = subpos[detectIdNum(this.id)];
			if(id==0 || id==/*4*/2) {
				$(this).css("top",postop);
			} else {
				$(this).animate({
					"top": Number(postop)
				}, 100, "swing");
			}
		});
		if(num || num==0) {
			setTimeout(function(){
				{setActiveHeader(num);}
			}, 110);
		} else if(!num) {
			setTimeout(function(){
				showActiveOrigami(-1);
			}, 100*neighbourNum);
		}
	}

	function setActiveHeader(num) {
		var hmax = subpos[/*4*/2] - subpos[0] + itemHeight;
		var topactive = $("#mh_"+num).position().top;
		var hactive = $("#mi_"+num).height();
		var spacer;
		if(num==0 || num==/*4*/2) {
			spacer = (hmax - (hactive-mactive) - /*4*/2*itemHeight)/ /*3*/1.6;
		} else {
			spacer = (hmax - hactive - /*4*/2*itemHeight)/ /*3*/1.2;
		}
		var newY = new Array();		
		for(var k=0; k</*5*/3; k++){
			if(k==0) {
				if(k==num) 
					newY[k] = subpos[0] - mactive;
				else 
					newY[k] = subpos[0];
			} else if(k == num) {
				newY[k] = newY[k-1] + itemHeight + spacer*0.6;
			} else if(k == num+1) {
				newY[k] = newY[k-1] + hactive + spacer*0.6;
			} else {
				newY[k] = newY[k-1] + itemHeight + spacer;
			}
		}
		$("#menumain > li").each(function(){
			var id = detectIdNum(this.id);
			var prevNum = num-1;
			var dn = id - num;
			var mdn = Math.abs(dn);
			$(this).animate({
				"top": Number(newY[id])
			}, 100, "swing");
		});
		setTimeout(function(){
			showActiveSub(num);
		}, 100*neighbourNum);
		setTimeout(function(){
			showActiveOrigami(num);
		}, 200*neighbourNum);
	}
	
	function showActiveSub(num) {
		$("#mi_"+num).fadeIn(100);
		is_progress = false;
	}
	
	function showActiveOrigami(num) {
		var kur = num+1;
		for(var k=0; k<=/*5*/3; k++) {
			if(k==kur) {
				$("#origami-kur-"+k).fadeIn(100);
			} else {
				$("#origami-kur-"+k).fadeOut(100);
			}
		}
	}

	if ($("#kalendar").length) {
		Kalendar.ini();
	}
});

var Kalendar = {
	today: null,
	currentDate: null,
	cache: {},
	cacheLinks: {},

	ini: function() {
		var t = new Date();
		var month = t.getMonth() + 1;
		var day = $("#calendar-main").attr("onclick")()//t.getDate();
		this.today = t.getFullYear() +"-"+ (parseInt(month)<10?"0":"") + month +"-"+ (parseInt(day)<10?"0":"") + day;
		$(".date-sw a").html(day).attr("href", "javascript:void(0)");
/*		$("#calendar-switch select option").each(function(i, v) {
			if ($(v).val() == (parseInt(month)<10?"0":"") + month) {
				$(v).attr("selected", "selected");
			} else {
				$(v).attr("selected", "");
			}
			$("#calendar-main").show();
		});
*/

$("#calendar-main").show();

		$("#calendar-switch select").change(Kalendar.changeMonth).change();
		$(".date-sw-l").click(function() {
			var t = Kalendar.currentDate.split("-");
			var m = t[0] +"-"+ t[1];
			if (Kalendar.cache[m]) {
				for (var i in Kalendar.cache[m]) {
					if (Kalendar.cache[m][i].day == t[2]) {
						break;
					}
				}
				for (i--; i>=0; i--) {
					if (Kalendar.cache[m][i].content) {
						Kalendar.showDate(Kalendar.cache[m][i].date);
						break;
					}
				}
			}
		});
		$(".date-sw-r").click(function() {
			var t = Kalendar.currentDate.split("-");
			var m = t[0] +"-"+ t[1];
			if (Kalendar.cache[m]) {
				for (var i in Kalendar.cache[m]) {
					if (Kalendar.cache[m][i].content && Kalendar.cache[m][i].day > t[2]) {
						Kalendar.showDate(Kalendar.cache[m][i].date);
						break;
					}
				}
			}
		});
	},

	showDate: function(date) {
		if (this.cache[date] && this.cache[date].content) {
			$(".calendar-info p:first").html(this.cache[date].content);
			$(".calendar-info p.readmore a").attr("href", "/calendar/"+date);
			$(".date-sw a").html(this.cache[date].day).attr("href", "/calendar/"+date);
			$(".calendar-info").show();
			this.currentDate = date;
		}
		return false;
	},

	renderMonth: function(r) {
		var s = "";
		var current_day = false;
		var first_day = false;

		for (var i in r) {
			if (r[i] && r[i].date) {
				var t = r[i].date.split("-");
				this.cache[t[0] +"-"+ t[1]] = r;
				break;
			}
		}

		for (var i in r) {
			var is_weekend = false;
			var is_current = false;
			if (!(i % 7) && i) {
				s += '<div class="clear"></div>';
			} else if (i%7==5 || i%7==6) {
				is_weekend = true;
			}
			if (r[i].date) {
				this.cache[r[i].date] = r[i];
				if (r[i].date == this.today) {
					is_current = true;
					current_day = r[i].day;
				}
			}

			var classes = is_weekend || is_current ? ' class="'+ (is_weekend?"weekend":"") + (is_current?" current":"") +'"' : "";
			if (!r[i]) {
				s += "<span></span>";
			} else if (r[i].content) {
				s += '<a href="" onclick="return Kalendar.showDate(\''+ r[i].date +'\'); return false;"><span'+ classes +'>'+ r[i].day +"</span></a>";
				if (!first_day) {
					first_day = r[i].day;
				}
			} else {
				s += "<span"+ classes +">"+ r[i].day +"</span>";
			}
		}
		$(".calendar-dayslist").html(s);

		//set first day
		if (current_day) {
			Kalendar.showDate(Kalendar.today);
			Kalendar.currentDate = Kalendar.today;
		} else if (first_day) {
			Kalendar.showDate(first_day);
		}
	},

	changeMonth: function() { // select of months context
		var t = Kalendar.today.split("-");
		var m = t[0] +"-"+ $(this).val();
		$(".calendar-info").hide();
		if (!Kalendar.cache[m]) {
			$.get("/calendar/data.json", {month: m+"-01"}, function(r) {Kalendar.renderMonth(r);}, "json");
		} else {
			Kalendar.renderMonth(Kalendar.cache[m]);
		}
	}
}

