var vTimer = {};
var scripts = {'catalog': '/ajax/apart_list.php', 'mylist': '/ajax/mylist.php'};
var settings = {
    'catalog': {
        'preAjax':
            function(type, obj){
                if ($(obj).hasClass("Active"))
                    return 'no load';
                if ($(obj).attr("filter")) {
					$("div[class=CatalogueFilterSelector]").css('display', 'none');
                    if ($(obj).attr('filter_name') == 'raion' && $(obj).parent().attr('class') != 'CatalogueFilter')
                    {
                        $(obj).html($(obj).children("span").html()); //replace span
                        $(obj).remove();
                        $(obj).insertBefore("div[class=CatalogueFilterPopup]");
                    }
                    if ($(obj).parent().attr('class') == 'CatalogueFilter') {
                        $(obj).addClass("Active");
                        $(obj).append('<span>&nbsp;</span>').find('span').click(
                            function(){
								if ($(this).parent().attr('dop')) {
									$(this).parent().removeClass("Active").contents().remove("span");
									$(obj).remove();
									$(obj).html('<span>'+$(obj).html()+'</span>');
									$(obj).prependTo("div[class=CatalogueFilterSelector] > ul > li[fid="+$(obj).attr('filter')+"]");
									$(obj).bind("click", {type: "catalog"}, ajaxRequest);
								}
								else {
									$(this).parent().removeClass("Active").contents().remove("span");
								}
								ajaxRequest('catalog');
                                return false;
                            }
                        );
                    }
                }
                if ($(obj).attr("filter_name")=='get_raion_list')
                    return 'no load';
				
				$("div[class=HideBlock]").css('display', 'block');
                return true;
            },
        'defineParams':
            function(){
				var data = {'is_ajax': 'true'}
				var delim='';
				if ($("div[class=CatalogueFilter] > a[filter_name=inet][class=Active]").attr('filter')) {
                    data['inet'] = ($("div[class=CatalogueFilter] > a[filter_name=inet][class=Active]").attr('filter'));
				}
				
				arr = new Array();
				($("div[class=CatalogueFilter] > a[filter_name=price][class=Active]")).each(function() {
					arr.push(delim+encodeURIComponent($(this).attr('filter'))+delim);
				});
				data['price[]'] = arr
				
				arr = new Array();
				($("div[class=CatalogueFilter] > a[filter_name=room][class=Active]")).each(function() {
					arr.push(delim+encodeURIComponent($(this).attr('filter'))+delim);
				});
				data['room[]'] = arr
				
				arr = new Array();
				($("div[class=CatalogueFilter] a[filter_name=raion][class=Active]")).each(function() {
					arr.push(delim+encodeURIComponent($(this).attr('filter'))+delim);
				});
				data['raion[]'] = arr
                return data
            },
        'postAjax':
            function(recieved_text, status){
				$("div[class=HideBlock]").css('display', 'none');
				$("div[class=CatalogueItem]").html('');
                $("div[class=CatalogueGrid]").html('');
                $("div[class=CatalogueGrid]").html(recieved_text);
				$("div[class=CatalogueGrid]").css('display', 'block');
				$("#flat_count").html($("#pre_flat_count").val());
				$("ul[class=SortingControl] a[class=Sorting]").bind("click", {type: "catalog"}, ajaxRequest);
				$("div[class=CataloguePager] > a").bind("click", {type: "catalog"}, ajaxRequest);
            }
    }
};

function loadPhoto(e){
	if (e.button == 0) {

		$("div[class=HideBlock]").css('display', 'block');

		$("div[class=PhotoViewer]").css('display', 'none');
		eobj = $(this);
		$.post(
			'/ajax/foto_galery.php',
			{kv: $(this).attr("kv"), is_ajax: true},
			function(recieved_text, status) {
				$("div[class=HideBlock]").css('display', 'none');
				eobj.parents("li[class=Photo]").eq(0).children("div[class=PhotoViewer]").html(recieved_text).css('display', 'block');
				$("img[class=SmallPhotoImage]").click(function(){
					$("div[class=PhotoViewerSelector] a").removeClass('Active');
					$(this).parent("a").eq(0).attr('class', 'Active');
					$("img[class=MainPhotoImage]").attr('src', $(this).attr('big_src'));
				})
				$("p.PhotoViewerCloser").click(function(){
					$("div.PhotoViewer").css('display', 'none'); return false;
				});
			},
			"html"
		);

		//alert ('s');

		return false;
	}
}





function loadSpecCalendar() {
    if ($(this).hasClass('SpecAvialable')) {
        var dt1 = $("#dt1").val();
        var dt2 = $("#dt2").val();
        object_for_load = $(this).parents("li.Cost").eq(0).children("div.FlatCalendar");
    }
    else {
        var dt1 = $(this).attr('dt');
        var dt2 = '';
        if ($(this).attr('dt').split('-')[1] == $("#dt1").val().split('-')[1]) {
            dt1 = $("#dt1").val();
            dt2 = $("#dt2").val();
        }
        object_for_load = $(this).parents("div.FlatCalendar");
    }
	$("div.HideBlock").css('display', 'block');
	$("div.FlatCalendar").css('display', 'none');
    eobj = $(this);
    $.post(
        '/ajax/spec_calendar.php',
        {kv: $(this).attr("kv"), is_ajax: true, 'dt1': dt1, 'dt2': dt2},
        function(recieved_text, status) {
			$("div.HideBlock").css('display', 'none');
			object_for_load.html(recieved_text).css('display', 'block');
        },
        "html"
    );
	return false;
}

function flatInfo(e){
	if (e.button == 0) {
		$("div[class=HideBlock]").css('display', 'block');
		eobj = $(this);
		$("div[class=CatalogueGrid]").css('display', 'none');
		$.post(
			$(this).attr('href'),
			{'is_ajax': 'true'},
			function(recieved_text, status){
				$("div[class=HideBlock]").css('display', 'none');
				$("div[class=CatalogueItem]").html(recieved_text);
				$("div[class=CatalogueItem]").css('display', 'block');
				$.post(
					'/ajax/foto_galery.php',
					{kv: eobj.attr("kv"), is_ajax: true},
					function(recieved_text, status) {
						$("div[class=PhotoViewer]").html(recieved_text);
						$("a[class=PhotoViewerCloser]").css('display', 'none');									
						document.location = "#results";
						$("img[class=SmallPhotoImage]").click(function(){
							$("div[class=PhotoViewerSelector] a").removeClass('Active');
							$(this).parent("a").eq(0).attr('class', 'Active');
							$("img[class=MainPhotoImage]").attr('src', $(this).attr('big_src'));
						})
					},
					"html"
				);
			},
			"html"
		);
		return false;
    }
}

function setRequest(preAjax, postAjax, timer) {
    if (preAjax == 'undefined')
        settings['preAjax'] = function(){};
    else
        settings['preAjax'] = preAjax;
    if (postAjax == 'undefined')
        settings['postAjax'] = function(){};
    else
        settings['postAjax'] = postAjax;
    if (timer == 'undefined')
        timer = 500;
    else
        settings['timer'] = parseInt(timer);
}

function ajaxRequest(event) {
    if (typeof(event) == 'string') {
        defineRequest(event, this);
        return false;
    }
    if (event instanceof Array) {
        for (var i=0; i<event.length; i++)
            defineRequest(event[i], this);
        return false;
    }
    if (typeof(event) == 'object') {
        if (typeof(event.data.type) == 'string') {
            defineRequest(event.data.type, this);
            return false;
        }
        if (event.data.type instanceof Array) {
            for (var i=0; i<event.data.type.length; i++)
                defineRequest(event.data.type[i], this);
            return false;
		}
	}
	return false;
}

function defineRequest(type, obj) {
	if (type == 'undefined') return false;
    res = settings[type]['preAjax'](type, obj);
    if (res === 'no load')
        return false;
    
	if ($(obj).hasClass('ExtFindButton')) {
		$("div[class=CatalogueFilter] a").removeClass("Active").contents().remove("span");
	}
	var data = settings[type]['defineParams']();
	
	if ($(obj).hasClass('ExtFindButton')) {
		$("div[class=CatalogueFilter] a").removeClass("Active").contents().remove("span");
		data['dt1'] = $("#ext_dt1").val();
		data['dt2'] = $("#ext_dt2").val();
		arr = new Array();
		is_all = false;
		$("div[class=SearchBlock] > div > span > input[type=checkbox]:checked").each(function(){
			value = $(this).parent().next().html()
			if (value == 'любое')
				is_all = true;
			else
				arr.push(encodeURIComponent(value));
		});
		if (!is_all)
			data['room[]'] = arr
		data['is_free'] = 'true';
	}
	else {
		data['dt1'] = $("#dt1").val();
		data['dt2'] = $("#dt2").val();
		data['is_free'] = $("#checkbox").attr("checked");
	}
	//alert(obj.attr('class')+' '+obj.attr("sort_field"));
	if ($(obj).hasClass('Sorting') || $(obj).attr('page')) {
        data['sort'] = $(obj).attr("sort_field");
        data['sort_type'] = $(obj).attr("sort_type");
    }
    else
	{
		if (($("#sort_type").length > 0) && ($("#sort_field").length > 0 )) {
			data['sort'] = $("#sort_field").val();
			data['sort_type'] = $("#sort_type").val();
		}
		else {
			data['sort'] = "id";
			data['sort_type'] = '';
		}
    }
    
    data['paginator'] = $("div[class=CatalogueGrid]").eq(0).attr('paginator');
    if ($(obj).attr('page'))
        data['current_page'] = $(obj).attr('page');
    else
        data['current_page'] = 1;
    eobj = obj
    $.ajax({
        url: scripts[type],
        data: data,
        success: settings[type]['postAjax'],
        cache: true,
		dataType: "text",
		type: "POST"
	});
}

//Init AJAX request for NauPhone callback.
function nauphone_callback() {
    phone = '8';
	//Мгновенный обратный звонок
    if ($(this).attr('class') == 'CallButton') {
        $(this).parent("li").find(":text").each(function(i){
            phone = phone + $(this).val();
        });
	}
    //Окно бронирования
	if ($(this).parents("#broninfo").length == 1) {
		if ($("#r1:checked").length == 1) {
            $("#broninfo li.PhonCell > :text:enabled").each(function(i){
                phone = phone + $(this).val();
            });
        }
        if ($("#r2:checked").length == 1) {
            $("#broninfo li.PhonSity > :text:enabled").each(function(i){
                phone = phone + $(this).val();
            });
        }
	}
	phone = phone.replace(/-/gi, '');

	if ( (phone.charAt(0) == 8) && (phone.charAt(1)== 8) )	{
		phone = phone.substr(1);
	}
	//alert (phone);
	//return;

    if (phone.length != 11) {
        alert('Номер телефона должен состоять из 10-ти цифр');
        return true;
    }
    //alert('ok1');
    //return true;
	var phone_fio = '';
	if (document.getElementById('phone_fio'))
		phone_fio = document.getElementById('phone_fio').value;

	var kvID = '';
	if (document.getElementById('kvID'))
		kvID = document.getElementById('kvID').value;

	var bdate = '';
	if (document.getElementById('dtp1_label'))
		bdate = document.getElementById('dtp1_label').value;

	var edate = '';
	if (document.getElementById('dtp2_label'))
		edate = document.getElementById('dtp2_label').value;

	var address = '';
	if (document.getElementById('FlatCalendarTitle'))
		address = document.getElementById('FlatCalendarTitle').innerHTML;
	


    var data = {'phone': phone, 'fio':phone_fio, 'kvID': kvID, 'bdate':bdate, 'edate':edate, 'address':address};
    $("#waitServer").css('display', 'block');
	$.ajax({
		url: '/callback/test.php',
		data: data,
		success: function(recieved_text, status) {
			//alert(recieved_text);
			if (recieved_text == 'ok') {
				$("#waitCalltext").text(phone);
				$("#waitCall").css('display', 'block');
				$("#waitServer").css('display', 'none');
			}
			if (recieved_text == 'no') {
				alert('К сожалению сервис временно недоступен. Попробуйте позже');
			}
        },
		cache: true,
		dataType: "text",
		type: "POST"
	});
	if ($(this).attr('class') == 'CallButton') {
		$("#kuda_zvonit").css('display', 'none');
	}
	else {
		$("#broninfo").css('display', 'none');
	}
}



//Init AJAX request for calculate.
function countOnly() {

	$("#find_button").html('Показать&nbsp;<img src="/Images/loading_.gif" alt="" height="22" width="22">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;квартир');

	
	/*
	ms = 1000;
	var date = new Date(); 
	curDate = null;
	do { var curDate = new Date(); }
	while ( curDate - date < ms);
 	*/
	



	var data = {'is_ajax': 'true', 'only_count': 'true'};
	if ($("#is_spo").length == 1) {
		data['is_spo'] = 'true';
	}
    if ($("#is_mylist").length == 1) {
		data['is_mylist'] = 'true';
	}
	
	data['raion[]'] = new Array();
	$(':checkbox[name=raion[]]:checked').each(function(i, selected){
		data['raion[]'].push(encodeURIComponent($(selected).val()));
	});

	data['room[]'] = new Array();
	$(':checkbox[name=room[]]:checked').each(function(i, selected){
		data['room[]'].push(encodeURIComponent($(selected).val()));
	});

	data['dt1'] = $("#dt1").val();
	if ($("#dt2").val() != '') {
		data['dt2'] = $("#dt2").val();
        data['is_free'] = 'true';
	}
	
	data['price'] = encodeURIComponent(parseInt($("#amount-min").val(), 10) + '__' + parseInt($("#amount-max").val(), 10));
	
	$('#dop_filters :checkbox:checked').each(function(i, selected){
		data[$(selected).attr('name')] = encodeURIComponent($(selected).val());
	});
	
	data['spm1'] = $("#spm1").val();
	data['spm2'] = $("#spm2").val();
	
	if ($(":checkbox[name='inet']:checked").length == 1) {
		data['inet'] = $(":checkbox[name='inet']:checked").val();
	}
	if ($(":checkbox[name='TEL']:checked").length == 1) {
		data['TEL'] = $(":checkbox[name='TEL']:checked").val();
	}
	
	$.ajax({
		url: scripts['catalog'],
		data: data,
		success: function(recieved_text, status){

			/*
			$("#find_button").val('Показать '+recieved_text);
			$("#find_button").show();
			$("#find_button").attr('disabled', false);
			if (recieved_text == '0 квартир')	{
				$("#find_button").attr('disabled', true);
			}
			if (recieved_text == '0 квартир со спецпредложениями')	{
				$("#find_button").attr('disabled', true);
			}
			*/


			$("#find_button").html('Показать '+recieved_text);
			$("#find_button").show();
			$("#find_button").attr('disabled', false);
			if (recieved_text == '0 квартир')	{
				$("#find_button").attr('disabled', true);
			}
			if (recieved_text == '0 квартир со спецпредложениями')	{
				$("#find_button").attr('disabled', true);
			}



			//alert (recieved_text);

			//$("#test").html(recieved_text);
        },
		cache: true,
		dataType: "text",
		type: "POST"
	});
}

//Init AJAX request for NauPhone callback.
function mylist() {

	
    var data = {'is_ajax': 'true'};
    ACLASS = $(this).parent().attr('class');
    AOBJECT = $(this);
	if (ACLASS == 'MyList') {
		data['oper'] = 'add';
	}
    if (ACLASS == 'DeleteMyList') {
		data['oper'] = 'remove';
    }
    if ($(this).attr('class') == 'flatDelete') {
		ACLASS = $(this).attr('class');
		data['oper'] = 'remove';
    }


    var kv = $(this).parent().parent().find("a:first").attr("kv");
	if (kv)	{}	else	{
	    var kv = $(this).parent().parent().attr("kv");
	}
	if (kv)	{}	else	{
	    var kv = $(this).attr("kv");
	}


    if (parseInt(kv, 10) && kv > 0) {
        data['kv'] = kv;
        $.ajax({
            url: scripts['mylist'],
            data: data,
            success: function(recieved_text, status){
                $("#mylist_count").html(recieved_text);
                if (ACLASS == 'MyList') {
                    AOBJECT.parent().attr('class', 'InMyList');
                    AOBJECT.parent().html('Уже в <a href="/mylist">Моем списке</a>');
                }
                if (ACLASS == 'DeleteMyList') {
                    AOBJECT.parents("ul").remove();
                }

                if (ACLASS == 'flatDelete') {
			AOBJECT.parents("ul").remove();
		}
		
                countOnly();
            },
            cache: true,
            dataType: "text",
            type: "POST"
        });
    }
    return false;
}

function bronCalendarList(kvID, dt1, dt2) {

	
    var data = {'is_ajax': 'true'};
	data['dt_begin'] = dt1;
	data['dt_end'] = dt2;
	data['kvID'] = kvID;

    $.ajax({
            url: '/calendar.php',
            data: data,
            success: function(recieved_text, status){
                $("#BronDatesList").html(recieved_text);
				$("#FlatCalendar").css('display', 'block');
            },
            cache: false,
            dataType: "text",
            type: "POST"
        });
    return false;
}

function bronPricesList(kvID, dt1, dt2) {

	
    var data = {'is_ajax': 'true'};
	data['prices_list'] = 1;
	data['dt_begin'] = dt1;
	data['dt_end'] = dt2;
	data['kvID'] = kvID;

    $.ajax({
            url: '/calendar.php',
            data: data,
            success: function(recieved_text, status){
                $("#bronPricesList").html(recieved_text);
            },
            cache: false,
            dataType: "text",
            type: "POST"
        });
    return false;
}


