/** Var */
var global_vm = "map";
var global_mobj = "all";
var loading = false;
/* END */

/** Functions */
function ShowModal() {
	$.colorbox({
		href: "#select-region",
		inline: true,
		overlayClose: false,
		escKey: false,
		scrolling: false,
		close: ""
	});
}

function ymapSubmit(form) {
	if (loading) $("#vm-container").addClass("loading").html("");
	form.ajaxSubmit({
		success: function(data, status, xhr) {
			var ctype = xhr.getResponseHeader("Content-Type");
			if (ctype == "application/json") {
				ClearMarkers();
				var json = eval(data);
				for (var i = 0; i < json.points.length; i++) {
					var obj = eval(json.points[i]);
					AddMarker(json.points[i]);
				}
				if (loading) {
					$("#vm-container").html('<div id="ymap"></div>');
					InitMap();
				}
				UpdateMap();
				SetCenter(json.center.lat, json.center.lng, json.center.zoom);
			} else {
				$("#vm-container").html(data);
			}
			$("#vm-container").removeClass("loading");
		}
	});
}

function ResetForced() {
	$("#ymap-search").find("input[name=forced_region]").val("none");
	$("#ymap-search").find("input[name=forced_item]").val("0");
}

function keyDownHandler(e, regxpMask){
	var target = $(e.target)[0];
    var str = $(target).val();
    var readyStr;
    var code = 0;

    if (e.keyCode) {
        code = e.keyCode;
    } else if (e.which) {
        code = e.which;
    }

    var symbol = '';
    if(code == 110 || code == 190 || code == 191){
        symbol = '.';
    } else if(code == 188 || (e.shiftKey && code == 191)){
        symbol = ',';
    } else if(code == 8 || code == 9 || code == 35 || code == 36 || code == 37 || code == 39 || code == 46){
        return;
    } else {
        if(code > 95 && code < 106){
            code -= 48;
        };
        symbol = String.fromCharCode(code);
    };

    if(/[0-9\,\.]/.test(symbol)){
        if (document.selection){
            target.focus();
            var select = document.selection.createRange();
            selectLength = document.selection.createRange().text.length;
            select.moveStart ('character', - target.value.length);
            caretPos = (select.text.length - selectLength) * 1;
        }
        else if (target.selectionStart || target.selectionStart == '0'){
            selectLength = target.selectionEnd * 1 - target.selectionStart * 1;
            caretPos = target.selectionStart * 1;
        }
        var leftPart = str.substr(0, caretPos);
        var rightPart = str.substr((caretPos + selectLength), (str.length - caretPos));
        readyStr = leftPart + symbol + rightPart;
        $(target).attr('prev', readyStr);
        if(readyStr.length > 0){
            var pattern = new RegExp(regxpMask);
            if(!(pattern.test(readyStr))){
                return false;
            };
        }
    } else if (!((e.ctrlKey) && (code == 67 || code == 86 || code == 88))){
        return false;
    };
    
}

function CalcCurrency() {
	var val = parseFloat($("#currency-value").val());
	switch ($("#currency-combo").val()) {
		case "1":
			var usd_val = val / usd_eur;
			var rur_val = val / eur_rur;
			$("#eur_val").hide();
			$("#usd_val").show().find("td:first").text(usd_val.toFixed(2));
			$("#rur_val").show().find("td:first").text(rur_val.toFixed(2));
			break;
		case "2":
			var rur_val = val / usd_rur;
			var eur_val = val / eur_usd;
			$("#usd_val").hide();
			$("#rur_val").show().find("td:first").text(rur_val.toFixed(2));
			$("#eur_val").show().find("td:first").text(eur_val.toFixed(2));
			break;
		case "3":
			var usd_val = val / rur_usd;
			var eur_val = val / rur_eur;
			$("#rur_val").hide();
			$("#usd_val").show().find("td:first").text(usd_val.toFixed(2));
			$("#eur_val").show().find("td:first").text(eur_val.toFixed(2));
			break;
	}
}
/* END */

/** Dropdown menu */
(function($) {
	$(function() {
		$("ul.mainmenu").delegate("li.parent:not(.active)", "mouseover", function() {
			$(this).addClass("active").siblings().removeClass("active");
			/*$(this).addClass("active").siblings().removeClass("active").parents(".mainmenu").find("div.dropdown").hide();
			if ($(this).hasClass("has_dd"))
				$("#hbottom").addClass("expanded");
			$(this).find("div.dropdown").show();*/
		});
		$("ul.mainmenu").delegate("li.parent:(.active)", "mouseleave", function() {
			$(this).removeClass("active");/*.find("div.dropdown").hide();
			$("#hbottom").removeClass("expanded");*/
		});
	});
	
	$(function() {
		$("#find-me-input").autocomplete({
			source: "/offices/autocomplete.php",
			minLength: 3
		});
	});
})(jQuery);
/* END */

$(document).ready(function() {
	/** Submit form using AJAX */
	$(".ajax-form").live("submit", function(e) {
		e.preventDefault();
		var container = $(this).parents(".form-container");
		$(this).ajaxSubmit({
			data: { __ajax: "Y" },
			success: function(data, status, xhr) {
				container.html(data);
				$.colorbox.resize();
			}
		});
	});
	/* END */
	
	/** Yandex.map controls */
	$("#city").live("change", function() {
		var val = $(this).val();
		$.get("/offices/ymap.php", { action: "get_stations", city: val }, function(data, status, xhr) {
			$("#stations-container").html(data);
			if (data == "") 
				$("#metro_li").hide();
			else
				$("#metro_li").show();
			ResetForced();
			ymapSubmit($("#ymap-search"));
		});
	});
	
	$("a.map_object").live("click", function(e) {
		e.preventDefault();
		var obj = $(this).attr("href");
		if (obj == "atm" || obj == "depbox")
			$("#" + obj).addClass("selected").siblings("li").removeClass("selected");
		else
			$("#all").addClass("selected").siblings("li").removeClass("selected");
		if (obj != global_mobj) {
			global_mobj = obj;
			loading = true;
		}
		$(this).parent("li").addClass("active").siblings("li").removeClass("active");
		$("#input_mobj").val(obj);
		$(this).parents("form").submit();
	});
	
	$("a.change_vm").live("click", function(e) {
		e.preventDefault();
		var vm = $(this).attr("href");
		if (vm != "map")
			$("div.find-me").hide();
		else
			$("div.find-me").show();
		if (vm != global_vm) {
			global_vm = vm;
			loading = true;
		}
		$(this).parent("li").addClass("active").siblings("li").removeClass("active");
		$("#input_vm").val(vm);
		$(this).parents("form").submit();
	});
	/* END */
	
	/** Yandex.map */
	$("#ymap-search").live("submit", function(e) {
		e.preventDefault();
		ResetForced();
		ymapSubmit($(this));
	});
	
	$("#ymap-find-me").live("submit", function(e) {
		e.preventDefault();
		var addr = $(this).find("input.edit").val();
		if (addr != "") {
			FindMe(addr);
		}
	});
	/* END */
	
	$("p.expander").live("click", function(e) {
		e.preventDefault();
		$(this).toggleClass("active").siblings(".node").toggle();
	});
	
	$(".toggle-text").live("focusin", function() {
		if (!$(this).hasClass("focused")) {
			$(this).addClass("focused").val("");
		}
	});
	$(".toggle-text").live("focusout", function() {
		if ($(this).val() == "") {
			$(this).removeClass("focused").val("Например, Москва, Арбат 1");
		}
	});
	
	$(".station").live("click", function(e) {
		e.preventDefault();
		var id = $(this).attr("id").slice(3);
		$("#station").find("option[value=" + id + "]").attr("selected", "selected");
		$("#list_li").find("a").click();
	});
	
	$("input.datepicker").live("focus", function() {
		$(this).datepicker({
			dateFormat: "dd.mm.yy",
			changeMonth: true,
			changeYear: true,
			minDate: "-100Y",
			maxDate: "-18Y"
		});
	});
	
	$("#reserve_wnd").live("click", function(e) {
		e.preventDefault();
		popupWin = window.open($(this).attr("href"), 'reserve', 'location,width=500,height=400,top=0');
		popupWin.focus();
	});
	$("#calc_wnd").live("click", function(e) {
		e.preventDefault();
		popupWin = window.open($(this).attr("href"), 'calc', 'scrollbars,width=640,height=450,top=0');
		popupWin.focus();
	});
	
	$("a[rel='license']").colorbox({
		current: "Изображение {current} из {total}"
	});
	
	$("a[rel='popup']").colorbox({
		current: "Изображение {current} из {total}"
	});
	
	$("#currency-value, .double").live("keydown", function(e) {
		return keyDownHandler(e, "^[0-9]+([.]([0-9]{0,2})?)?$");
	});
	$("#currency-value").live("keyup", function(e) {
		CalcCurrency();
	});
	$(".insurance_percent").live("keyup", function() {
		var p = parseFloat($(this).val());
		if (p > 0) {
			if (p > 40) {
				p = 40;
				$(this).val("40");
			}
			var sum = $("#sum").val();
			var val = sum / 100 * p;
			$(".insurance_val").val(val.toFixed(2));
		}
	});
	$(".insurance_val").live("keyup", function() {
		var v = parseFloat($(this).val());
		if (v > 0) {
			var sum = $("#sum").val();
			var val = v / (sum / 100);
			$(".insurance_percent").val(val.toFixed(2));
		}
	});
	
	$("#currency-combo").live("change", function() {
		CalcCurrency();
	});
	
	$("#qcd_fixed a, a.qcd_show").colorbox({
		href: "#qcd_form",
		innerWidth: 630,
		inline: true,
		overlayClose: true,
		escKey: true,
		scrolling: false
	});
	
	$("#minority_fixed a").colorbox({
		href: "#minority_form",
		innerWidth: 630,
		inline: true,
		overlayClose: true,
		escKey: true,
		scrolling: false
	});
	
	$(".route .link").live("click", function(e) {
		e.preventDefault();
		$(this).toggleClass("active").siblings(".text").toggle();
	});
	
	$("#cb_offices").live("change", function() {
		$(this).attr("disabled", "disabled");
		$.post(
			"/ajax/rates.php",
			{ __ajax: "Y", office_id: $(this).val() },
			function(data, status, xhr) {
				var json = eval("(" + data + ")");
				$("#usd_buy").text(json.usd_buy);
				$("#usd_sell").text(json.usd_sell);
				$("#usd_buy1000").text(json.usd_buy1000);
				$("#usd_sell1000").text(json.usd_sell1000);
				$("#eur_buy").text(json.eur_buy);
				$("#eur_sell").text(json.eur_sell);
				$("#eur_buy1000").text(json.eur_buy1000);
				$("#eur_sell1000").text(json.eur_sell1000);
				$("#gbp_buy").text(json.gbp_buy);
				$("#gbp_sell").text(json.gbp_sell);
				$("#gbp_buy1000").text(json.gbp_buy1000);
				$("#gbp_sell1000").text(json.gbp_sell1000);
				$("#chf_buy").text(json.chf_buy);
				$("#chf_sell").text(json.chf_sell);
				$("#chf_buy1000").text(json.chf_buy1000);
				$("#chf_sell1000").text(json.chf_sell1000);
			}
		);
		$(this).removeAttr("disabled");
	});
	
	$("#calc").live("submit", function(e) {
		e.preventDefault();
		$(this).ajaxSubmit({
			data: { __ajax: "Y" },
			success: function(data, status, xhr) {
				$("#calc-table").html(data);
			}
		});
	});
	
	$("tr.onhover").live("mouseover", function() {
		$(this).addClass("hover");
	});
	$("tr.onhover").live("mouseleave", function() {
		$(this).removeClass("hover");
	});
	
	$("a.ajax-news").live("click", function(e) {
		e.preventDefault();
		$("#office_news").html('<div class="loading">Загрузка...</div>');
		$.ajax({
			url: "/offices/get_news.php",
			data: { __ajax: "Y", ELEMENT_ID: $(this).attr("data-element"), NEWS_ID: $(this).attr("data-id"), action: "get" },
			success: function(data, status, xhr) {
				$("#office_news").html(data);
			}
		});
	});
	
	$("#back_to_news").live("click", function(e) {
		e.preventDefault();
		$("#office_news").html('<div class="loading">Загрузка...</div>');
		$.ajax({
			url: $(this).attr("href"),
			data: { __ajax: "Y", action: "get_all" },
			success: function(data, status, xhr) {
				$("#office_news").html(data);
			}
		});
	});
	
	$(".popup-news").live("click", function(e) {
		e.preventDefault();
		var r = $("#city").val();
		$("#news-popup-content").html('<div class="loading">Загрузка новостей...</div>').parents("#news-popup").show();
		$.ajax({
			url: $(this).attr("href"),
			data: { __ajax: "Y", region_id: r },
			success: function(data, status, xhr) {
				$("#news-popup-content").html(data);
			}
		});
	});
	
	$("#popup-close").live("click", function(e) {
		e.preventDefault();
		$("#news-popup").hide();
	});
});
