//TODO нулевую сумму в минимуме обработать нужно
//Первым делом -- в переводах
$(document).ready(function(){
	$('.shyLink').slideDown();
	var navInit = function(){
		$('body').append('<div id="navigator"><div id="navBar"></div><div id="navCont"></div></div>'); //создаем навигатор
		$('#navigator').expose({
			api : true,
			color: "#ffffff",
			opacity: 0.8,
			onClose: function(event){
				closeNav();
			}
		}).load();
		setNavigatorPos();
		$(window).resize(setNavigatorPos);
		$(window).scroll(setNavigatorPos);
		$('#navigator').append('<img src="/img/spinnerTrans.gif" id="navSpinner"/>');
		$.get("/navContent.php", function(data){ //делаем запрос данных, берется из xmind xml-файла
			(function(data){
				$('#navSpinner').remove();
				var navHeight = 300; //высота
				var getSubTopics = function(id){//получение связанных топиков (иерархических)
					var topics = $("topic[id='" + id + "'] > children > topics[type='attached'] > topic", data);
					if (topics.length) {
						var parent = $("topic[id='" + id + "']", data).parents('topic:first');
						if (parent.length) {
							parentId = parent.attr('id');
						}
						return topics;
					}
					else {
						getProducts(id);
						return false;
					}
				}
				$('#navBar').append('<a href="#" id="navClose">закрыть</a>');
				$('#navClose').click(function(){
					closeNav();
					return false;
				});
				var updateNavigator = function(topics){
					if (topics) {
						var str = '';
						for (var i = 0; i < topics.length; i++) {
							str = str + '<p style="display: block; height: ' + 100 / topics.length + '%;"><a style="line-height: ' + navHeight / topics.length + 'px;" href="#" id="' + topics[i].getAttribute('id') + '">' + $("title:first", topics[i]).text() + '</a></p>';
						}
						$('#navCont').append('<div class="navDiv">' + str + '</div>');
						$('.navDiv:last').fadeIn('slow', setPosition);
						$('#navCont a').unbind('click');
						$('#navCont a').click(function(){
							$(this).blur();
							$(this).addClass('active').removeClass('passive').removeClass('hover');
							$(this).parent().siblings().find("a").removeClass('active').addClass('passive');
							$(this).parent().parent().nextAll('div').remove();
							$('#products').remove();
							updateNavigator(getSubTopics($(this).attr('id')));
							return false;
						});
						setHovers();
						$('#navBar a.navBack').remove();
						if ($('#navCont div').length > 1) {
							$('#navBar').append('<a href="#" class="navBack" id="' + parentId + '">назад</a>');
							$('#navBar a.navBack').click(function(){
								if ($('#products').length) {
									$('#products').fadeOut("fast", function(){
										$(this).remove();
										$('#navCont .navDiv:last').find('a.passive').removeClass('passive', 'fast');
										$('#navCont .navDiv:last').find('a.active').removeClass('active');
										setPosition();
										setHovers();
									});
								}
								else {
									if ($('#navCont .navDiv').length > 1) {
										$('#navCont .navDiv:last').fadeOut("fast", function(){
											$(this).remove();
											$('#navCont .navDiv:last').find('a.passive').removeClass('passive', 'fast');
											$('#navCont .navDiv:last').find('a.active').removeClass('active');
											setPosition();
											setHovers();
											if ($('#navCont .navDiv').length == 1) {
												$('#navBar a.navBack').remove();
											}
										});
									}
								}
								return false;
							});
						}
					}
				}
				var setHovers = function(){
					$('#navCont a').unbind('mouseenter mouseleave');
					$('#navCont a').not(".active").hover(function(){
						$(this).addClass('hover');
					}, function(){
						$(this).removeClass('hover');
					});
				}
				var getProducts = function(id){
					$('#products').fadeOut("fast", function(){
						$(this).remove();
					});
					var rels = $("relationship[end1='" + id + "']", data);
					if (rels.length) {
						var topics = new Array();
						var str = '<ul id="products">';
						for (var i = 0; i < rels.length; i++) {
							topic = $("topic[id='" + rels[i].getAttribute('end2') + "']", data);
							str = str + '<li style="height: ' + 100 / rels.length + '%;"><a style="line-height: ' + navHeight / rels.length + 'px;" href="#" id="' + $(topic).attr('id') + '">' + $("title:first", topic).text() + '</a></li>';
						}
						str = str + "</ul>";
						$('#navCont').append(str);
						$('#products').fadeIn('slow', setPosition);
						$('#products a').unbind('click');
						$('#products a').click(function(){
							if (product = getProductDetails($(this).attr('id'))) {
								$('#navigator').append('<div id="product"><h2>' + $(this).text() + '</h2></div>');
								$('#product').append('<p><a href="' + product.link + '" target="_blank">полные условия</a></p>');
								$('#product').append('<a href="#" id="prodClose">назад</a>');
								$('#prodClose').click(function(){
									$('#product').fadeOut('fast', function(){
										$(this).remove();
									});
									return false;
								});
								if (product.bails) {
									if (product.bails.sumMax && product.bails.sumMin) {
										$('#product').append('<h3>Сумма кредита: <span id="sum"></span></h3>');
										$('#product').append('<div id="slider_1" class="slider"></div>');
										$("#slider_1").slider({
											value: product.bails.sumMin,
											min: product.bails.sumMin,
											max: product.bails.sumMax,
											step: 10000,
											slide: function(event, ui){
												$("#sum").html(ui.value + ' ' + product.cur);
											},
											stop: function(event, ui){
												checkBail(product, ui.value);
											}
										});
										$("#sum").html($("#slider_1").slider('value') + ' ' + product.cur);
									}
									$('#product').append('<h3>Возможное обеспечение</h3>');
									if (product.bails.subs.length > 1) {
										var str = '<ul id="bails">';
										for (b = 0; b < product.bails.subs.length; b++) {
											str += '<li>' + product.bails.subs[b].bail + '</li>';
										}
										str += "</ul>";
										$('#product').append(str);
									}
									$('#product').fadeIn('slow');
									checkBail(product, $("#slider_1").slider('value'));
								}
								if (product.deposits) {
									if (product.deposits.sumMax && product.deposits.sumMin) {
										$('#product').append('<h3>Минимальная сумма вклада: <span id="sum"></span></h3>');
										$('#product').append('<div id="slider_1" class="slider"></div>');
										$("#slider_1").slider({
											value: product.deposits.sumMin,
											min: product.deposits.sumMin,
											max: product.deposits.sumMax,
											step: 500,
											stop: function(event, ui){
												$("#sum").html(ui.value + ' ' + product.cur);
												checkDep(product, ui.value);
											},
											slide: function(event, ui){
												$("#sum").html(ui.value + ' ' + product.cur);
											}
										});
										$("#sum").html($("#slider_1").slider('value') + ' ' + product.cur);
									}
									if (product.deposits.termMax && product.deposits.termMin) {
										$('#product').append('<h3>Срок вклада: <span id="term"></span></h3>');
										$('#product').append('<div id="slider_2" class="slider"></div>');
										$("#slider_2").slider({
											value: 1,
											min: 1,
											max: product.deposits.termMax,
											step: 1,
											stop: function(event, ui){
												$("#term").html(ui.value + ' дн.');
												checkDep(product, $("#slider_1").slider('value'), ui.value);
											},
											slide: function(event, ui){
												$("#term").html(ui.value + ' дн.');
											}
										});
										$("#term").html($("#slider_2").slider('value') + ' дн.');
									}
									if (product.deposits.subs.length > 1) {
										$('#product').append('<h3>Виды вкладов и ставки</h3>');
										var str = '<ul id="deposits">';
										for (b = 0; b < product.deposits.subs.length; b++) {
											str += '<li>' + product.deposits.subs[b].deposit + '<span class="rate"></span></li>';
										}
										str += "</ul>";
										$('#product').append(str);
									}
									$('#product').fadeIn('slow');
									checkDep(product, $("#slider_1").slider('value'), $("#slider_2").slider('value'));
								}
								if (product.transfers) {
									if (product.transfers.sumMax) {
										$('#product').append('<h3>Сумма перевода: <span id="sum"></span></h3>');
										$('#product').append('<div id="slider_1" class="slider"></div>');
										product.transfers.sumMin = product.transfers.sumMin ? product.transfers.sumMin : 100;
										$("#slider_1").slider({
											value: product.transfers.sumMin,
											min: product.transfers.sumMin,
											max: product.transfers.sumMax,
											step: 100,
											stop: function(event, ui){
												$("#sum").html(ui.value + ' ' + product.cur);
												checkTransfer(product, ui.value);
											},
											slide: function(event, ui){
												$("#sum").html(ui.value + ' ' + product.cur);
											}
										});
										$("#sum").html($("#slider_1").slider('value') + ' ' + product.cur);
									}
									if (product.transfers.subs.length > 1) {
										$('#product').append('<h3>Примерные комиссии</h3>');
										var str = '<ul id="transfers">';
										for (b = 0; b < product.transfers.subs.length; b++) {
											str += '<li>' + product.transfers.subs[b].transfer + '<span class="rate"></span></li>';
										}
										str += "</ul>";
										$('#product').append(str);
									}
									$('#product').fadeIn('slow');
									checkTransfer(product, $("#slider_1").slider('value'));
								}
								if(product.description){
									$('#product').append('<p class="lead">'+product.description+'</p>');
								}
								if (!product.deposits && !product.bails && !product.transfers) {
									$('#product').fadeIn('slow');
								}
							}
							return false;
						});
					}
					else {
						return false;
					}
				}
				var checkBail = function(product, value){
					$('#bails li').each(function(){
						var ind = $('#bails li').index(this);
						if (product.bails.subs[ind].sumMin <= value && product.bails.subs[ind].sumMax >= value) {
							$(this).fadeIn("fast");
						}
						else {
							$(this).fadeOut("fast");
						}
					});
				}
				var checkDep = function(product, value, value_2){
					$('#deposits li').each(function(){
						var ind = $('#deposits li').index(this);
						if (product.deposits.subs[ind].sumMin <= value) {
							$(this).fadeIn("fast");
						}
						else {
							$(this).fadeOut("fast");
						}
						for (var r = 0; r < product.deposits.subs[ind].rates.length; r++) {
							if (parseInt(product.deposits.subs[ind].rates[r].t) >= value_2) {
								$(this).find("span.rate").html(" " + product.deposits.subs[ind].rates[r].p);
								return;
							}
							$(this).find("span.rate").html(" " + product.deposits.subs[ind].rates[product.deposits.subs[ind].rates.length - 1].p);
						}
					});
				}
				var checkTransfer = function(product, value){
					$('#transfers li').each(function(){
						var ind = $('#transfers li').index(this);
						for (var r = 0; r < product.transfers.subs[ind].rates.length; r++) {
							var rate=false;
							if (parseInt(product.transfers.subs[ind].rates[r].sum) > value) {
								rate=product.transfers.subs[ind].rates[r];
								break;
							}
							if(!rate){
								rate=product.transfers.subs[ind].rates[product.transfers.subs[ind].rates.length - 1];
							}
						}
						var str=" ";
						if(rate.rateMin && rate.rateMax){
							if(rate.rateMin != rate.rateMax){
								str+="от "+rate.rateMin+" до "+rate.rateMax;
							}else{
								str+=rate.rateMin;
							}
							if(rate.rateSumMin && rate.rateSumMax){
								str += " (";

								if (rate.rateSumMin) {
									str += "мин. " + rate.rateSumMin+" "+product.cur;
									if (rate.rateSumMax) {
										str += ", ";
									}
								}
								if (rate.rateSumMax && rate.rateSumMax != rate.rateSumMin) {
									str += "макс. " + rate.rateSumMax+" "+product.cur;
								}
								
								str += ")";
							}
						}
						else{
							if(rate.rateSumMin){
								str += "мин. "+rate.rateSumMin+" "+product.cur;
								if(rate.rateSumMax){
									str += ", ";										
								}										
							}
							if(rate.rateSumMax){
								str += "макс. "+rate.rateSumMax+" "+product.cur;										
							}
						}
						$(this).find("span.rate").html(str);
					});
				}
				var getProductDetails = function(id){
					try {
						var conds = $("topic[id='" + id + "'] > children > topics[type='attached'] > topic > title", data);
						var product = Object();
						product.bails = Object();
						product.bails.subs = Array();
						product.deposits = Object();
						product.deposits.subs = Array();
						product.transfers = Object();
						product.transfers.subs = Array();
						product.link = "";
						var b = false;
						var d = false;
						var t = false;
						for (var k = 0; k < conds.length; k++) {
							var obj = eval("(" + $(conds[k]).text() + ")");
							if (obj.link) 
								product.link = obj.link;
							if (obj.disc) 
								product.disc = obj.disc;
							if (obj.description) 
								product.description = obj.description;
							if (obj.cur) 
								product.cur = obj.cur;
							if (obj.bail && obj.sumMin && obj.sumMax) {
								b = true;
								product.bails.subs[k] = obj;
								if (product.bails.sumMin) {
									if (product.bails.sumMin > obj.sumMin) {
										product.bails.sumMin = obj.sumMin;
									}
								}
								else {
									product.bails.sumMin = obj.sumMin;
								}
								if (product.bails.sumMax) {
									if (product.bails.sumMax < obj.sumMax) {
										product.bails.sumMax = obj.sumMax;
									}
								}
								else {
									product.bails.sumMax = obj.sumMax;
								}
							}
							if (obj.deposit) {
								d = true;
								var obj = eval("(" + $(conds[k]).text() + ")");
								product.deposits.subs[k] = obj;
								if (product.deposits.sumMin) {
									if (product.deposits.sumMin > obj.sumMin) {
										product.deposits.sumMin = obj.sumMin;
									}
								}
								else {
									product.deposits.sumMin = obj.sumMin;
								}
								if (product.deposits.sumMax) {
									if (product.deposits.sumMax < obj.sumMin) {
										product.deposits.sumMax = obj.sumMin;
									}
								}
								else {
									product.deposits.sumMax = obj.sumMin;
								}
								for (var r = 0; r < product.deposits.subs[k].rates.length; r++) {
									var rate = product.deposits.subs[k].rates[r];
									if (product.deposits.termMin) {
										if (product.deposits.termMin > rate.t) {
											product.deposits.termMin = rate.t;
										}
									}
									else {
										product.deposits.termMin = rate.t;
									}
									if (product.deposits.termMax) {
										if (product.deposits.termMax < rate.t) {
											product.deposits.termMax = rate.t;
										}
									}
									else {
										product.deposits.termMax = rate.t;
									}
								}
							}
							if (obj.transfer) {
								t = true;
								var obj = eval("(" + $(conds[k]).text() + ")");
								product.transfers.subs[k] = obj;
								if (product.transfers.sumMin) {
									if (product.transfers.sumMin > obj.sumMin) {
										product.transfers.sumMin = obj.sumMin;
									}
								}
								else {
									product.transfers.sumMin = obj.sumMin;
								}
								if (product.transfers.sumMax) {
									if (obj.sumMax != Infinity && product.transfers.sumMax < obj.sumMax) {
										product.transfers.sumMax = obj.sumMax;
									}
								}
								else if(obj.sumMax != Infinity) {
									product.transfers.sumMax = obj.sumMax;
								}else{
									product.transfers.sumMax = 0;
								}
								for (var r = 0; r < product.transfers.subs[k].rates.length; r++) {
									var rate = product.transfers.subs[k].rates[r];
								}
							}
						}
						if (!b) {
							product.bails = null;
						}
						if (!d) {
							product.deposits = null;
						}
						if (!t) {
							product.transfers = null;
						}
						return product;
					} 
					catch (e) {
						alert('exeption: ' + e);
					}
					return false;
				}
				var setPosition = function(){
				
					if ($('#products').length) {
						var d = $('#products');
					}
					else {
						var d = $('.navDiv:last');
					}
					
					var tw = $(d).width();
					
					if(jQuery.browser.msie && jQuery.browser.version=="6.0"){
						//alert(d.offsetWidth);
					}
					
					var prevOff = 0;
					
					d.prevAll('.navDiv').each(function(){
						prevOff += $(this).outerWidth();
					});
					
					var off = (d.parent().parent().width() - parseInt(d.parent().parent().css('margin-left')) - tw) / 2 - prevOff;
					
					d.parent().animate({
						left: off + 'px'
					}, 300);
				}
				var parentId = $("topic:first", data).attr('id');
				var topics = getSubTopics(parentId);
				updateNavigator(topics);
			})(data);
		}, 'xml');
	}
	var setNavigatorPos =function(){
		if(document.documentElement.scrollTop !== undefined){
			var scrollTop = document.documentElement.scrollTop;
		}else{
			var scrollTop = window.scrollY;
		}
		var left=parseInt($('body').width()/2 - $('#navigator').width()/2);
		var top=parseInt($(window).height()/2 - $('#navigator').height()/2 + scrollTop);
		$('#navigator').css({
			"left" : left,
			"top"  : top
		});
	} 
	var closeNav = function(){
		$('#navigator').expose({
			api : true
		}).close();
		$('#navigator').fadeOut('slow', function(){
			$(this).remove();
		});
	}
	if($('#navClicker').length){
		$('#navClicker').click(function(){
			if (!$('#navigator').length) {
				navInit();
			}
			return false;
		});
	}
});
