var cWindow_Search = {
	choice_init: function()
	{
		var _this = this;

		this.dom_basket_preview_details = $(_(this.name + '_basket_preview_details'));

		$('a.button-basket-add')
			.click(function(){
				var href = $(this).attr('href');
				if (href.match(/realty_id=([0-9]+)$/i)) {
					//alert(RegExp.$1);
					_this.ajaxRequest('basket_add', {'realty_id': RegExp.$1});
				} else {
					alert('Ошбика, не верный realty_id');
				}
				return false;
			});

		$('a.button-basket-remove')
			.click(function(){
				var href = $(this).attr('href');
				if (href.match(/realty_id=([0-9]+)$/i)) {
					//alert(RegExp.$1);
					_this.ajaxRequest('basket_remove', {'realty_id': RegExp.$1});
				} else {
					alert('Ошбика, не верный realty_id');
				}
				return false;
			});
	},

	table_init: function()
	{
    	//realty detail
        var detail_toggle = function(id) {
        	var row = $('#' + id);
        	if (row.hasClass('realty-row-open')) {
        		row.removeClass('realty-row-open');
        		$('#' + id + '_detail').hide();
        	} else {
        		row.addClass('realty-row-open');
        		$('#' + id + '_detail').show();
        	}
        }

        $('tr.realty-row').click(function() {
        	var row = $(this);
        	var id = row.attr('id');
        	detail_toggle(id);
        	$('#' + id + '_detail a.realty-detail-table-buttons-turn')
        		.unbind()
        		.click(function() { detail_toggle(id); return false; })
        });
	},

    requestCallback: function(result, request_params, exception)
    {
        if (request_params.rm == 'basket_add' || request_params.rm == 'basket_remove') {
	        try {
	            if (exception) {
	                result.exception.handled = true;
	            } else {
	         		this.draw_basket(result.basket_info);
	            }
	        }
	        catch (e) {
	            this.handleJSException(e);
	        }
        } else {
        	this.m = cWindow.requestCallback;
            return this.m(result, request_params);
        }
    },

    draw_basket: function(basket_info)
    {
    	$('a.button-basket-remove').hide();
    	$('a.button-basket-add').show();

    	var realty_count = 0;
    	var realty_type_map = {'ROOM': 'комнаты',
    	                       'FLAT_1': 'квартиры 1к',
    						   'FLAT_2': 'квартиры 2к',
    						   'FLAT_3': 'квартиры > 2к',
    						   'COTTAGE': 'котеджи'};
  		var detail_text = '';

    	for (var i in basket_info) {
    		if (typeof(basket_info[i]) != 'object') continue;

    		if (basket_info[i].length > 0) {
    			if (detail_text.length > 0) {
    				detail_text = detail_text + ', ';
    			}
    			detail_text = detail_text + realty_type_map[i] + ' &ndash; ' + basket_info[i].length;
    		}

        	for (var j = 0; j < basket_info[i].length; j++) {
        		var realty = basket_info[i][j];
        		realty_count++;
        		$('#choice_basket_add_' + realty.realty_id).hide();
        		$('#choice_basket_remove_' + realty.realty_id).css('display', 'block');
        	}
    	}

    	detail_text = '<strong>' + realty_count + '</strong>' + (detail_text.length > 0 ? ' (' + detail_text + ')' : '');

    	this.dom_basket_preview_details.html(detail_text);
    }
}

function Window_Search(data)
{
    this.pc = Window;
    this.pc(data);

    for (var f in cWindow_Search) {
        this[f] = cWindow_Search[f];
    }

    var _this = this;

    this.price_spread = data.price_spread;

    this.dom_input_realty_group = $(_(this.name + '_realty_group')).change(function() {
     	var init_data_trackbar = getTrackbarInitData();
     	_this.dom_trackbar_realty_price.trackbar(init_data_trackbar);
    });
    this.dom_input_realty_street = $(_(this.name + '_realty_street'));
    this.dom_select_realty_street = $(_(this.name + '_realty_street_select'));

    this.dom_input_realty_price_min = $(_(this.name + '_realty_price_min'));
    this.dom_input_realty_price_max = $(_(this.name + '_realty_price_max'));
    this.dom_value_price_min = $(_(this.name + '_value_price_min'));
    this.dom_value_price_max = $(_(this.name + '_value_price_max'));

	this.dom_trackbar_realty_price = $(_(this.name + '_trackbar_realty_price'));

    // setup trackbar
    var setPrice = function(min, max) {
    	_this.dom_input_realty_price_min.val(min);
    	_this.dom_input_realty_price_max.val(max);
    	_this.dom_value_price_min.html(number_format(min, '&nbsp;'));
    	_this.dom_value_price_max.html(number_format(max, '&nbsp;'));
    }

    var getTrackbarInitData = function() {
	    var init_data_trackbar = {
			onMove : function() {
				setPrice(this.leftValue, this.rightValue);
			},
			width: 185,
			roundUp: 1000,
			clearLimits: true,
			clearValues: true
		};

		var spread_key = 'COMMON';
	    if (typeof(_this.price_spread[_this.dom_input_realty_group.val()]) != 'undefined') {
	    	spread_key = _this.dom_input_realty_group.val();
	    }

		init_data_trackbar['leftLimit']	= _this.price_spread[spread_key].min;
		init_data_trackbar['leftValue']	= _this.price_spread[spread_key].min;
		init_data_trackbar['rightLimit'] = _this.price_spread[spread_key].max;
		init_data_trackbar['rightValue'] = _this.price_spread[spread_key].max;

		return init_data_trackbar;
    }

    var init_data_trackbar = getTrackbarInitData();

	if (this.dom_input_realty_price_min.val() != '' && this.dom_input_realty_price_max.val() >= init_data_trackbar['leftLimit']) {
		init_data_trackbar['leftValue']	= this.dom_input_realty_price_min.val();
	}

	if (this.dom_input_realty_price_max.val() != '' && this.dom_input_realty_price_max.val() <= init_data_trackbar['rightLimit']) {
		init_data_trackbar['rightValue'] = this.dom_input_realty_price_max.val();
	}

    this.dom_trackbar_realty_price.trackbar(init_data_trackbar);


    //select street
    var offset = this.dom_select_realty_street.offset();

    var x = offset.top + this.dom_select_realty_street.get(0).offsetHeight + 3;
    var y = offset.left;
    window.windows['window_select_street'].init(x, y, this.dom_select_realty_street, this.dom_input_realty_street.val(), function(id, val) {
    	_this.dom_select_realty_street.val(val);
    	_this.dom_input_realty_street.val(id)
    });

    if (data.table_enabled) {
        this.table_init();
    }

    if (data.choice_enabled) {
    	this.choice_init();
    	this.draw_basket(data.basket_info);
    }

}
