(function($){$.fn.ajaxSubmit=function(options){if(!this.length){log('ajaxSubmit: skipping submit process - no element selected');return this;}
if(typeof options=='function')
options={success:options};var url=$.trim(this.attr('action'));if(url){url=(url.match(/^([^#]+)/)||[])[1];}
url=url||window.location.href||''
options=$.extend({url:url,type:this.attr('method')||'GET'},options||{});var veto={};this.trigger('form-pre-serialize',[this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');return this;}
if(options.beforeSerialize&&options.beforeSerialize(this,options)===false){log('ajaxSubmit: submit aborted via beforeSerialize callback');return this;}
var a=this.formToArray(options.semantic);if(options.data){options.extraData=options.data;for(var n in options.data){if(options.data[n]instanceof Array){for(var k in options.data[n])
a.push({name:n,value:options.data[n][k]});}
else
a.push({name:n,value:options.data[n]});}}
if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){log('ajaxSubmit: submit aborted via beforeSubmit callback');return this;}
this.trigger('form-submit-validate',[a,this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-submit-validate trigger');return this;}
var q=$.param(a);if(options.type.toUpperCase()=='GET'){options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.data=null;}
else
options.data=q;var $form=this,callbacks=[];if(options.resetForm)callbacks.push(function(){$form.resetForm();});if(options.clearForm)callbacks.push(function(){$form.clearForm();});if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){$(options.target).html(data).each(oldSuccess,arguments);});}
else if(options.success)
callbacks.push(options.success);options.success=function(data,status){for(var i=0,max=callbacks.length;i<max;i++)
callbacks[i].apply(options,[data,status,$form]);};var files=$('input:file',this).fieldValue();var found=false;for(var j=0;j<files.length;j++)
if(files[j])
found=true;var multipart=false;if(options.iframe||found||multipart){if(options.closeKeepAlive)
$.get(options.closeKeepAlive,fileUpload);else
fileUpload();}
else
$.ajax(options);this.trigger('form-submit-notify',[this,options]);return this;function fileUpload(){var form=$form[0];if($(':input[name=submit]',form).length){alert('Error: Form elements must not be named "submit".');return;}
var opts=$.extend({},$.ajaxSettings,options);var s=$.extend(true,{},$.extend(true,{},$.ajaxSettings),opts);var id='jqFormIO'+(new Date().getTime());var $io=$('<iframe id="'+id+'" name="'+id+'" src="about:blank" />');var io=$io[0];$io.css({position:'absolute',top:'-1000px',left:'-1000px'});var xhr={aborted:0,responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(){this.aborted=1;$io.attr('src','about:blank');}};var g=opts.global;if(g&&!$.active++)$.event.trigger("ajaxStart");if(g)$.event.trigger("ajaxSend",[xhr,opts]);if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&$.active--;return;}
if(xhr.aborted)
return;var cbInvoked=0;var timedOut=0;var sub=form.clk;if(sub){var n=sub.name;if(n&&!sub.disabled){options.extraData=options.extraData||{};options.extraData[n]=sub.value;if(sub.type=="image"){options.extraData[name+'.x']=form.clk_x;options.extraData[name+'.y']=form.clk_y;}}}
setTimeout(function(){var t=$form.attr('target'),a=$form.attr('action');form.setAttribute('target',id);if(form.getAttribute('method')!='POST')
form.setAttribute('method','POST');if(form.getAttribute('action')!=opts.url)
form.setAttribute('action',opts.url);if(!options.skipEncodingOverride){$form.attr({encoding:'multipart/form-data',enctype:'multipart/form-data'});}
if(opts.timeout)
setTimeout(function(){timedOut=true;cb();},opts.timeout);var extraInputs=[];try{if(options.extraData)
for(var n in options.extraData)
extraInputs.push($('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />').appendTo(form)[0]);$io.appendTo('body');io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);form.submit();}
finally{form.setAttribute('action',a);t?form.setAttribute('target',t):$form.removeAttr('target');$(extraInputs).remove();}},10);var nullCheckFlag=0;function cb(){if(cbInvoked++)return;io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);var ok=true;try{if(timedOut)throw'timeout';var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;if((doc.body==null||doc.body.innerHTML=='')&&!nullCheckFlag){nullCheckFlag=1;cbInvoked--;setTimeout(cb,100);return;}
xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;xhr.getResponseHeader=function(header){var headers={'content-type':opts.dataType};return headers[header];};if(opts.dataType=='json'||opts.dataType=='script'){var ta=doc.getElementsByTagName('textarea')[0];xhr.responseText=ta?ta.value:xhr.responseText;}
else if(opts.dataType=='xml'&&!xhr.responseXML&&xhr.responseText!=null){xhr.responseXML=toXml(xhr.responseText);}
data=$.httpData(xhr,opts.dataType);}
catch(e){ok=false;$.handleError(opts,xhr,'error',e);}
if(ok){opts.success(data,'success');if(g)$.event.trigger("ajaxSuccess",[xhr,opts]);}
if(g)$.event.trigger("ajaxComplete",[xhr,opts]);if(g&&!--$.active)$.event.trigger("ajaxStop");if(opts.complete)opts.complete(xhr,ok?'success':'error');setTimeout(function(){$io.remove();xhr.responseXML=null;},100);};function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async='false';doc.loadXML(s);}
else
doc=(new DOMParser()).parseFromString(s,'text/xml');return(doc&&doc.documentElement&&doc.documentElement.tagName!='parsererror')?doc:null;};};};$.fn.ajaxForm=function(options){return this.ajaxFormUnbind().bind('submit.form-plugin',function(){$(this).ajaxSubmit(options);return false;}).each(function(){$(":submit,input:image",this).bind('click.form-plugin',function(e){var form=this.form;form.clk=this;if(this.type=='image'){if(e.offsetX!=undefined){form.clk_x=e.offsetX;form.clk_y=e.offsetY;}else if(typeof $.fn.offset=='function'){var offset=$(this).offset();form.clk_x=e.pageX-offset.left;form.clk_y=e.pageY-offset.top;}else{form.clk_x=e.pageX-this.offsetLeft;form.clk_y=e.pageY-this.offsetTop;}}
setTimeout(function(){form.clk=form.clk_x=form.clk_y=null;},10);});});};$.fn.ajaxFormUnbind=function(){this.unbind('submit.form-plugin');return this.each(function(){$(":submit,input:image",this).unbind('click.form-plugin');});};$.fn.formToArray=function(semantic){var a=[];if(this.length==0)return a;var form=this[0];var els=semantic?form.getElementsByTagName('*'):form.elements;if(!els)return a;for(var i=0,max=els.length;i<max;i++){var el=els[i];var n=el.name;if(!n)continue;if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el){a.push({name:n,value:$(el).val()});a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});}
continue;}
var v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(var j=0,jmax=v.length;j<jmax;j++)
a.push({name:n,value:v[j]});}
else if(v!==null&&typeof v!='undefined')
a.push({name:n,value:v});}
if(!semantic&&form.clk){var $input=$(form.clk),input=$input[0],n=input.name;if(n&&!input.disabled&&input.type=='image'){a.push({name:n,value:$input.val()});a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});}}
return a;};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic));};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n)return;var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++)
a.push({name:n,value:v[i]});}
else if(v!==null&&typeof v!='undefined')
a.push({name:this.name,value:v});});return $.param(a);};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=$.fieldValue(el,successful);if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length))
continue;v.constructor==Array?$.merge(val,v):val.push(v);}
return val;};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(typeof successful=='undefined')successful=true;if(successful&&(!n||el.disabled||t=='reset'||t=='button'||(t=='checkbox'||t=='radio')&&!el.checked||(t=='submit'||t=='image')&&el.form&&el.form.clk!=el||tag=='select'&&el.selectedIndex==-1))
return null;if(tag=='select'){var index=el.selectedIndex;if(index<0)return null;var a=[],ops=el.options;var one=(t=='select-one');var max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=op.value;if(!v)
v=(op.attributes&&op.attributes['value']&&!(op.attributes['value'].specified))?op.text:op.value;if(one)return v;a.push(v);}}
return a;}
return el.value;};$.fn.clearForm=function(){return this.each(function(){$('input,select,textarea',this).clearFields();});};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=='text'||t=='password'||tag=='textarea')
this.value='';else if(t=='checkbox'||t=='radio')
this.checked=false;else if(tag=='select')
this.selectedIndex=-1;});};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType))
this.reset();});};$.fn.enable=function(b){if(b==undefined)b=true;return this.each(function(){this.disabled=!b;});};$.fn.selected=function(select){if(select==undefined)select=true;return this.each(function(){var t=this.type;if(t=='checkbox'||t=='radio')
this.checked=select;else if(this.tagName.toLowerCase()=='option'){var $sel=$(this).parent('select');if(select&&$sel[0]&&$sel[0].type=='select-one'){$sel.find('option').selected(false);}
this.selected=select;}});};function log(){if($.fn.ajaxSubmit.debug&&window.console&&window.console.log)
window.console.log('[jquery.form] '+Array.prototype.join.call(arguments,''));};})(jQuery);
var Table = (function() {
    var oTable, oTitle, oCount, oData, oListing;
    function getPeriod(key) {
        switch (key) {
            case 1:
                return 'Посуточная';
            case 2:
                return 'Еженедельная';
            case 3:
                return 'Ежемесячная';
            default:
                return 'Ежемесячная';
        }
    }
    function getArea(oItem) {
        switch (oItem.type) {
            case 'room':
                return '(общ./жил./кух./комната): ' + oItem.area.full + '/' + oItem.area.leave + '/' + oItem.area.kitchen + '/' + oItem.area.room;
            case 'flat':
                return '(общ./жил./кух.): ' + oItem.area.full + '/' + oItem.area.leave + '/' + oItem.area.kitchen;
            default:
                return '(общ./жил./кух.): ' + oItem.area.full + '/' + oItem.area.leave + '/' + oItem.area.kitchen;
        }
    }
    function htmlItem(oItem) {
	if (oItem){
	    var sPhotoBlock = '';
	    if (oItem.photos) {
		var isNoPhoto = oItem.photos.names[0] == 'no-photo.gif';
		if (!isNoPhoto) {
		    sPhotoBlock = '<div class="photos"><div><img src="' + oItem.photos.small_path + oItem.photos.names[0] + '" class="first cur" alt="">';
		    for (var i = 1; i < oItem.photos.names.length; i++) {
			var last = (i == oItem.photos.names.length - 1) ? ' class="last"' : '';
			sPhotoBlock += '<img _src="' + oItem.photos.small_path + oItem.photos.names[i] + '"' + last + ' alt="" style="display: none;">';
		    }
		    sPhotoBlock += (oItem.photos.names.length > 1) ? '<a href="#" class="photo-previous"><i> </i></a><a href="#" class="photo-next"><i> </i></a></div></div>' : '</div></div>';
		}
	    }
	    var sGalleryLink = (isNoPhoto) ? '' : '<a href="/?module=single_notice&act=lease_flat&uid=' + oItem.id + '" class="open-gallery"><i>&nbsp;</i>Галерея</a>';
	    var sFlat = (oItem.type == 'room') ? 'Комната в ' + oItem.rooms + ' квартире' : oItem.rooms + ' комнатная квартира';
	    var padding = (isNoPhoto) ? '20px' : '110px';
	    return '\
	    <div class="item" address="' + oItem.address + '" metro_name="' + oItem.metro + '" full_area="' + oItem.area.full + '" price="' + oItem.payment.price + ' ' + oItem.payment.currency + '" uid="' + oItem.id + '" photo="' + oItem.photos.small_path + oItem.photos.names[0] + '">\
		<i class="design-bottom">&nbsp;</i>\
		<div class="payment">\
		    <p class="s">' + getPeriod(oItem.payment.period) + ' плата</p>\
		    <p class="price">' + oItem.payment.price + ' ' + oItem.payment.currency + '</p>\
		    <p>\
			<a href="/?module=single_notice&act=lease_flat&uid=' + oItem.id + '" class="open-descr"><i>&nbsp;</i>Подробное описание</a>' + sGalleryLink + '\
		    </p>\
		</div>\
		<div class="info">\
		    <div class="general-descr">\
			<div style="padding-right: ' + padding + ';">\
			    <p class="fast-data">\
				<span class="metro"><i>&nbsp;</i>' + oItem.metro + '</span>\
				<span class="time"><i>&nbsp;</i>' + oItem.path_time.walk + ' пешком</span>\
				<span class="time"><i>&nbsp;</i>' + oItem.path_time.car + ' транс.</span>\
			    </p>\
			    <p><strong>' + sFlat + '</strong></p>\
			    <p>Площадь ' + getArea(oItem) + ' м&sup2;</p>\
			    <p>Этаж: ' + oItem.floor.cur + ' из ' + oItem.floor.all + '</p>\
			    <p><a href="#' + oItem.id + '" class="map"><i>&nbsp;</i>Показать на карте</a></p>\
			</div>\
		    </div>' + sPhotoBlock + '\
		    <div class="text-descr">\
			<div style="padding-left: ' + padding + ';">' + oItem.description + '</div>\
			<input type="hidden" name="lat" value="' + oItem.coordinates.lat + '"><input type="hidden" name="lng" value="' + oItem.coordinates.lng + '">\
		    </div>\
		</div>\
	    </div>';
	} else {
	    return '';
	}
    }
    function buildTable() {
        oTable.html('');
	if (oData.items.length > 0) {
	    for (var i = 0; i < oData.items.length; i++) {
		oTable.append(htmlItem(oData.items[i]));
	    }
	    $('#listing').show();
	} else {
	    oTable.append('<div class="item"><div style="padding: 50px;"><h2>По вашему запросу ничего не найдено</h2><p>Наш телефон: (495) 766-03-49</p><p>Позвоните нам и мы подберем квартиру лично для вас!</p></div></div>');
	    $('#listing').hide();
	}
    }
    var initListingListner = function () {
	oListing.oListing.find('a').unbind('click');
	oListing.oListing.find('a').bind('click', function() {
	    if (!$(this).parent().hasClass('disabled')) listingListner($(this));
	    return false;
	});
    }
    function listingListner(oButton) {
	var data = oListing.listner(oButton, $('#filter-sort-page-number').val())
	if (data.isChange) {
	    $('#filter-sort-page-number').val(data.nextPage);
	    $('#control form').submit();
	}
    }
    function initFastGallery() {
	oTable.delegate('.photo-previous', 'click', function() {
	    var images = $(this).parent().find('img');
	    var cur = images.filter('.cur');
	    var prev = (cur.hasClass('first')) ? images.filter(':last') : cur.prev();
	    if (!prev.attr('src') || prev.attr('src') == '') prev.attr('src', prev.attr('_src'));
	    images.removeClass('cur').hide();
	    prev.addClass('cur').show();
	    return false;
	});
	oTable.delegate('.photo-next', 'click', function() {
	    var images = $(this).parent().find('img');
	    var cur = images.filter('.cur');
	    var next = (cur.hasClass('last')) ? images.filter(':first') : cur.next();
	    if (!next.attr('src') || next.attr('src') == '') next.attr('src', next.attr('_src'));
	    images.removeClass('cur').hide();
	    next.addClass('cur').show();
	    return false;
	});
    }
return {
    init: function() {
        if (arguments.length > 0) oTable = arguments[0];
        if (arguments.length > 1) oTitle = arguments[1];
        if (arguments.length > 2) oCount = arguments[2];
	oListing = new Listing($('#listing'), 4);
	initFastGallery();
    },
    clearTable: function() {
        oTable.html('');
    },
    render: function(data) {
	$('#results').show();
	$('#table-loader').hide();
	document.body.style.cursor = 'default';
        if (data) oData = data.data;
        buildTable();
	$('#result-cnt').html(data.list.count);
	oListing.makeListing(data.list.pages, data.list.current);
	initListingListner();
	tempGMap.checkPoint();
    }
}    
})();

function Listing(oListing, nLuft) {
    this.oListing = $(oListing);
    this.nPages = this.nCurrent = 1;
    this.nLuft = (nLuft) ? nLuft - 0 : 4;;
    this.init(oListing, nLuft);
}

Listing.prototype.init = function (oListing, nLuft) {
    this.oListing = $(oListing);
    this.nLuft = (nLuft) ? nLuft - 0 : 4;
    this.nRdots = this.nLdotes = this.nRcount = this.nLcount = this.nLfirst = this.nLlast = 0;
}

Listing.prototype.ListingArchitect = function () {
    var rdots, ldots, rcount, lcount;
    this.nPages-=0;
    this.nCurrent-=0;
    rdots = ldots = true;
    rcount = lcount = this.nLuft;
    if (lcount + rcount + 1 >= this.nPages) {
	rcount = this.nPages - this.nCurrent;
	lcount = this.nCurrent - 1;
	rdots = ldots = false;
    } else {
	if (lcount >= (this.nCurrent - 1)) {
	    ldots = false;
	    lcount = this.nCurrent - 1;
	    rcount = 2 * this.nLuft - lcount;
	}
	if (lcount == (this.nCurrent-2)) {
	    ldots = false;
	    lcount += 1;
	}
	if ((rcount + this.nCurrent) >= this.nPages) {
	    rcount = this.nPages - this.nCurrent;
	    lcount = 2 * this.nLuft-rcount;
	    rdots = false;
	}
	if ((rcount + this.nCurrent) == (this.nPages - 1)) {
	    rcount += 1;
	    rdots = false;
	}
    }
    this.nLcount = lcount;
    this.nLdots = ldots;
    this.nRcount = rcount;
    this.nRdots = rdots;
}

Listing.prototype.ListingConstructor = function () {
    var sUL = new Array();
    var number = this.nLfirst = this.nCurrent - this.nLcount;
    if (this.nLdots) {
	sUL.push('<li><a v="' + (this.nLfirst - 1) + '">...</a></li>');
    }
    for (var i = 0; i < (this.nLcount + this.nRcount + 1); i++) {
	var str = (number == this.nCurrent) ? ' class="cur"' : '';
	sUL.push('<li' + str + '><a v="' + number + '">' + number + '</a></li>');
	number++;
    }
    if (this.nRdots) {
	sUL.push('<li><a v="' + number + '">...</a></li>');
    }
    this.nLlast = number - 1;
    $('#listing ul').after('<ul>' + sUL.join('') + '</ul>').remove();    
    var span = this.oListing[0].getElementsByTagName('SPAN');
    span[0].className = span[1].className = 'disabled';
    if (this.nLfirst < this.nCurrent) span[0].className = 'enabled';
    if (this.nLlast != this.nCurrent) span[1].className = 'enabled';
}

Listing.prototype.makeListing = function () {
    var arg = arguments;
    if (arg[0]) this.nPages = (arg[0] == 0 || arg[0] == '') ? 1 : arg[0];
    if (arg[1]) this.nCurrent = arg[1];
    this.ListingArchitect();
    this.ListingConstructor();
}

Listing.prototype.listner = function (oButton, nCurPage) {
    function getNextPageNumber(obj, current) {
	var nNewPage = nCurPage;
	var isButtonDown = obj[0].tagName.toLowerCase() == 'li';
	if (!isButtonDown) {
	    nNewPage  = (obj.attr('title') == 'next') ? current + 1 : current - 1;
	} else {
	    nNewPage  = obj.find('a').attr('v') - 0;
	}
	if (nNewPage < 1) nNewPage = 1; else if (nNewPage > this.nPages) nNewPage = this.nPages;
	return nNewPage;
    }
    this.nCurrent = nCurPage - 0;
    var nNextPage = getNextPageNumber(oButton.parent(), this.nCurrent);
    var isChange = this.nCurrent != nNextPage;
    var parentTagName = oButton.parent()[0].tagName.toLowerCase();
    if (isChange) {
	if (parentTagName == 'li') oButton.css('background-color', '#dedede');
	    else if (parentTagName == 'span') oButton.parent().addClass('disabled');
        this.nCurrent = nNextPage;
    }
    return { isChange: isChange, nextPage: nNextPage };
}

var G_FIND_TIMER = 0;
var Core = (function() {
    var _metro = null;
    var _okrug = null;
    var XHR = null;
    var search_mod = true;
    function initProvider() {
        $('#control form').ajaxForm({
            dataType: 'json',
            beforeSubmit: function() {
                if (XHR) XHR.abort();
                XHR = arguments[4];
		tableLoading();
		mapLoading();
            },
            error: function(XHR) {
		try {
		    var data = eval('(' + XHR.responseText + ')');
		    if (data && data.error_code && data.error_code == 200) {
			Table.render(data);
		    } else {
			alert('Ошибка подключения к серверу: неверный ответ сервера');
		    }
		} catch (err) {}
            },
            success: function(data, status) {
                if (status == 'success' && data.error_code == 200) {
		    Table.render(data);
		}
            }
        });
    };
    function initSliders() {
        function setSlider(obj, title, inputMin, inputMax) {
            var step = (inputMax.val() > 15000) ? 500 : 1;
	    obj.slider({
                range: true,
                min: inputMin.val() - 0,
                max: inputMax.val() - 0,
                values: [inputMin.val() - 0, inputMax.val() - 0],
		step: step,
                slide: function(event, ui) {
                    title.html(ui.values[0] + ' - ' + ui.values[1]);
                    inputMin.val(ui.values[0]);
                    inputMax.val(ui.values[1]);
                    autoGetData();
                }
            });
            title.html(obj.slider('values', 0) + ' - ' + obj.slider('values', 1));
            inputMin.val(obj.slider('values', 0));
            inputMax.val(obj.slider('values', 1));
	};
        $('#control .slider').each(function() {
            var o = $(this);
            setSlider(o.find('div'), o.find('.result span'), o.find('input.min'), o.find('input.max'));
        });
    };
    function initButtons() {
        $('#filter-room-count a, #filter-buiding-type a').click(function() {
            var sElement = this.className.replace('button ', '');
            var oBlock = $(this).parent();
            (oBlock.hasClass(sElement)) ? oBlock.removeClass(sElement) : oBlock.addClass(sElement);
	    if (oBlock.attr('name') && oBlock.attr('name') != '') {
		oBlock.find('input').val(oBlock.attr('name'));
	    } else {
		oBlock.find('input').val($.trim(oBlock[0].className).replace(/b/gi, '').replace(/\s/g, ','));
		if ($.trim(oBlock[0].className).split(' ').length == oBlock.find('a').size()) {
		    oBlock.find('input').val('');
		}
	    }
            autoGetData();
        });
	$('#control input[type=text], select').bind('change', function() {
	    autoGetData();
	});
    };
    function initSort() {
        $('#filter-sort a').click(function() {
            $('#filter-sort a').removeClass('selected');
            $(this).addClass('selected');
            $('#filter-sort-input').val($(this).attr('name'));
            autoGetData();
        });
    };
    function initElements() {
        initSliders();
	if ($('#control').size() > 0 && location.search.match('act=search')) setParams();
	initButtons();
        initSort();
    };
    function mapLoading() {
	try {
	    tempGMap.clearPointers();
	    $('#map div.loading').show();
	} catch(err) {}
    };
    function tableLoading() {
	$('#results').hide();
	$('#table-loader').show();
	document.body.style.cursor = 'wait';
    };
    function autoGetData() {
	if (search_mod) {
	    $('#filter-sort-page-number').val(1);
	    clearTimeout(G_FIND_TIMER);
	    G_FIND_TIMER = setTimeout(function() {
		$('#control form').submit();
	    }, 1000);
	}
    };
    function initControl() {
        if (search_mod) initProvider();
        initElements();
    };
    function initMapMetro() {
	_metro = Metro;
	_metro.init();
	_metro.addMaster('maps');
    };   
    function initMapOkrug() {
	_okrug = new MultiMap();
	_okrug.init('departmentjs', '/moscow_department.html');
    };
    function setParams() {
	function setSelButtons(sContentSelector) {
	    var aItems = ($.trim($(sContentSelector).find('input').val()) != '') ? $(sContentSelector).find('input').val().split(',') : null;
	    if (aItems) {
		var str = '';
		for (var i = 0; i < aItems.length; i++) str += 'b' + aItems[i] + ' ';
		$(sContentSelector).attr('class', str);
		if (aItems.length == $(sContentSelector).find('a').size()) {
		    $(sContentSelector).attr('class', '');
		    $(sContentSelector).find('input').val('');
		}
	    }
	};
	function setSliders() {
	    $('#control').find('div.ui-slider').each(function() {
		var min = $(this).parent().find('input.min').val();
		var max = $(this).parent().find('input.max').val();
		$(this).slider('option', 'values', [ min, max ]);
		$(this).parent().find('.result span').html(min + ' - ' + max);
		$(this).slider('enable');
	    });
	};
	var params = decodeURIComponent(location.search).split('&').splice(1);
	var oControl = $('#control');
	for (var i = 0; i < params.length; i++) {
	    var oParam = params[i].split('=');
	    oControl.find('input[name=' + oParam[0] + ']').val(oParam[1]);
	}
	setSelButtons('#filter-buiding-type');
	setSelButtons('#filter-room-count');
	setSliders();
    };
    function initMainDepartmentMap() {
	$('#mmap area').attr('check', 0);
	$('#mmap area').click(function() {
	    var oThis = $(this);
	    var did = oThis.attr('href').match(/\d+/)[0];
	    var departmens = $('#filter-sort-department').val();
	    if (oThis.attr('check') == 0) {
		oThis.attr('check', 1);
		$('#filter-sort-department').val((departmens == '') ? did : departmens + ' ' + did);
		oThis.addClass(oThis.attr('alt') + '-act');
	    } else {
		oThis.attr('check', 0);
		$('#filter-sort-department').val(departmens.replace(' ' + did, ''));
		oThis.removeClass(oThis.attr('alt') + '-act');
	    }	    
	    //$('#control form').submit();
	    return false;
	});
    };
return {
    init: function() {
	if ($('#results').size() == 0) search_mod = false;
	if (search_mod) Table.init($('#results'), null, null);
	initControl();
	if (search_mod) $('#control form').submit();
	if (!search_mod) initMainDepartmentMap();
	if ($('#window_container').size() > 0) {
	    initMapMetro();
	    initMapOkrug();
	}	
    }
}    
})();

var FormRequest = (function() {
    function initSliders() {
        function setSlider(obj, title, inputMin, inputMax) {
	    var data = title.html().match(/\d+/g);
	    var step = (inputMax.val() > 15000) ? 500 : 1;
            obj.slider({
                range: true,
                min: data[0] - 0,
                max: data[1] - 0,
                values: [inputMin.val() - 0, inputMax.val() - 0],
		step: step,
                slide: function(event, ui) {
                    title.html(ui.values[0] + ' до ' + ui.values[1]);
                    inputMin.val(ui.values[0]);
                    inputMax.val(ui.values[1]);
                }
            });
            title.html(inputMin.val() + ' до ' + inputMax.val());
	};
        $('#rent-form, #lease-form').find('.slider').each(function() {
            var o = $(this);
            setSlider(o.find('div'), o.find('.result span'), o.find('input.min'), o.find('input.max'));
        });
    }
    var initSuggest = function () {
	$('#rent-form, #lease-form').find('select.suggest').each(function() {
	    var JSON = [];
	    $(this).find('option').each(function() {
		JSON[JSON.length] = { name: this.innerHTML, id: this.getAttribute('value') };
	    });
	    var name = this.getAttribute('name');
	    var id = this.id
	    $(this).after('<input type="text" id="' + id + '-vis"><input type="hidden" name="' + name + '" id="' + id + '">').remove();
	    $('#' + id + '-vis').autocomplete(JSON, {
		formatItem: function(row) {
		    return row.name;
		},
		formatMatch: function(row) {
		    return row.name;
		},
		formatResult: function(row) {
		    return row.name;
		}
	    });
	    $('#' + id + '-vis').result(function(event, data, formatted) {
		$('#' + id).val(data.id);
	    });
	    $('#' + id + '-vis').bind('blur', function() {
	    
	    });
	});

    };
return {
    init: function(obj) {
	initSliders();
	initSuggest();
	var oForm = $('#rent-form, #lease-form').find('form');
	var oMessage = $('#rent-form, #lease-form').find('.message');
	if (obj) {
	    oForm = obj.find('form');
	    oMessage = obj.find('.message');
	}
	oForm.ajaxForm({
	    dataType: 'html',
            beforeSubmit: function() {
                var key = true;
		oForm.find('.base').each(function() {
		    if ($.trim($(this).val()) == '') {
			key = false;
			this.focus();
		    }		    
		});
		if (key) {
		    oMessage.removeClass('error').removeClass('success').addClass('loading').text('Отправка формы...').show();
		} else {
		    oMessage.removeClass('loading').removeClass('success').addClass('error').text('Заполните обязательные поля.').show();
		}
		return key;
            },
            error: function(XHR) {
            },
            success: function(data, status) {
                if (status == 'success' && data.split(':')[0] == 200) {
		    oForm.resetForm();
		    oMessage.removeClass('loading').removeClass('error').addClass('success').text('Мы перезвоним вам в течение суток.').show();
		} else {
		    oMessage.removeClass('loading').removeClass('success').addClass('error').text('Ошибка:' + data.split(':').splice(1).join('')).show();
		}
            }  
	});
	$('#object .request a.button').toggle(function() {
	    $('#object .request .carrier').show();
	}, function() {
	    $('#object .request .carrier').hide();
	});
	$('#questionnaire a').toggle(function() {
	    $('#object .request .carrier').show();
	}, function() {
	    $('#object .request .carrier').hide();
	});
    }
}
})();

function initAuthForm() {
    function initAdminPanel() {
	$('#admin-panel').html('<ul>\
	    <li class="add-object"><a href="/?module=form&act=lease_flat" title="Добавить объявление">Добавить объявление</a></li>\
	    <li class="notices"><a href="/?module=articles" title="Статьи">Статьи</a></li>\
	    <li class="news"><a href="/?module=news" title="Новости">Новости</a></li>\
	    <li class="managers"><a href="/?module=managers" title="Менеджеры">Менеджеры</a></li>\
	    <li class="exit"><a href="/?act=logout" title="Выход">Выход</a></li>\
	</ul>').show();
    }
    $('#footer div:last').append('<div id="auth">\
	<form action="/?act=login" method="POST">\
	    <p><label for="auth-login">Логин:</label><input type="text" name="login" id="auth-login"></p>\
	    <p><label for="auth-password">Пароль:</label><input type="password" name="password" id="auth-password"></p>\
	    <p><input type="submit" value="Войти"></p>\
	</form>\
    </div>');
    $('#footer p:first').css('cursor', 'default').toggle(function() { $('#auth').show(); }, function() { $('#auth').hide(); });
    if (!logged) {
	var oForm = $('#footer form');
	oForm.ajaxForm({
	    dataType: 'html',
	    beforeSubmit: function() {
		oForm.find('p').hide();
		(oForm.find('p.message').size() == 0) ? oForm.append('<p class="message loading">Авторизация...</p>') : oForm.find('p.message').attr('class', 'message loading').html('Авторизация...');
	    },
	    error: function(XHR) {
		oForm.find('p:last').attr('class', 'message error').html('Ошибка: ' + XHR.responseText);
	    },
	    success: function(data) {
		if (data.split('|')[0].match('ok')) {
		    oForm.parent().hide().find('p').show().filter(':last').remove();
		    initAdminPanel();
		} else {
		    oForm.find('p').show().filter('.message').attr('class', 'message error').html('Ошибка: ' + data.split('|')[0]);
		}
	    }  
	});
	$('p.a-action').remove();
    } else {
	initAdminPanel();
	$('p.a-action').show();
    }
}

function initMap() {
    var LI = $('#map li');
    $('#map area').hover(function() {
	LI.filter('.' + this.className).addClass(this.className + '-hover');
    }, function() {
	LI.filter('.' + this.className).removeClass(this.className.split(' ')[0] + '-hover');
    });
}

var Admin = (function() {
    var initForm = function() {
	var oMessage = $('#add-form .message');
	var oButton = $('#add-form input[type=submit]');
	var oTable = $('.admin#container tbody');
	var type = $('#add-form form').attr('action').match(/(module=)(\w+)(&|\s|\n)/i)[2];
	$('#add-form a').toggle(function() {
	    $('#add-form div').show()
	}, function() {
	    $('#add-form div').hide()
	});
	$('#add-form form').ajaxForm({
	    dataType: 'html',
            beforeSubmit: function() {
		oButton.attr('disabled', 'disabled');
		oMessage.attr('class', 'loading').html('Отправка запроса...');
            },
            error: function(XHR) {
		oButton.attr('disabled', '');
		oMessage.attr('class', 'error').html('Ошибка:' + XHR.responseText);
	    },
            success: function() {
		document.location.href = ($('#add-form form input[name=redir]').size()) ? $('#add-form form input[name=redir]').val() : document.location.href;
            }  
	});
    }
    var initTable = function() {
	var oTable = $('.admin#container');
	oTable.find('span.td-action a.action').click(function() {
	    $(this.parentNode).find('.confirm').show().end().find('.action').hide();
	});
	oTable.find('span.td-action a.no').click(function() {
	    $(this.parentNode).find('.confirm').hide().end().find('.action').show();
	});
	oTable.find('span.td-action a.yes').click(function() {
	    var oThis = $(this);
	    var oTd = $(this.parentNode.parentNode);
	    $.ajax({
		type: 'POST', dataType: 'text',
		data: oThis.attr('post'),
		beforeSend: function() {
		    oTd.find('span').hide();
		    oTd.append('<em class="loading td-action">Выполнение...</em>');
		},
		error: function(XHR) {
		    oTd.find('em').attr('class', 'error td-action').html('Ошибка: ' + XHR.responseText);
		},
		success: function() {
		    location.href = location.href;
		}
	    });
	    return false;
	});
    }
    var initTiny = function() {
	$('a.tiny').one('click', function() {
	    var oThis = $(this);
	    jQuery.ajaxSettings.cache = true;
	    $.getScript('/tiny/jquery.tinymce.js', function() {
		$('textarea.tiny').tinymce({
		    script_url: '/tiny/tiny_mce.js',
		    theme: 'advanced',
		    theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect", /* ,fontsizeselect */
		    theme_advanced_buttons2: "bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,image,cleanup,help,code,|,insertdate,inserttime,preview",
		    theme_advanced_buttons3: "hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,fullscreen",
		    theme_advanced_toolbar_location: "top",
		    theme_advanced_toolbar_align: "left",
		    theme_advanced_resizing: true,
		    theme_advanced_statusbar_location: "bottom",
		    plugins: "safari,pagebreak,style,layer,table,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
		    content_css: "/css/tiny.css"
		});
		$('input[type=submit]').click(function() {
		    $('#add-form textarea.tiny').each(function() {
			try { $(this).val(tinyMCE.getInstanceById(this.id).getContent()); } catch(err) {}
		    });	
		});
	    });
	    jQuery.ajaxSettings.cache = false;
	});
    }
    var initTinyStart = function() {
	if ($('#add-form .tiny-start').size() > 0) {
	    jQuery.ajaxSettings.cache = true;
	    $.getScript('/tiny/jquery.tinymce.js', function() {
		$('textarea.tiny-start').tinymce({
		    script_url: '/tiny/tiny_mce.js',
		    theme: 'advanced',
		    theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect", /* ,fontsizeselect */
		    theme_advanced_buttons2: "bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,image,cleanup,help,code,|,insertdate,inserttime,preview",
		    theme_advanced_buttons3: "hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,fullscreen",
		    theme_advanced_toolbar_location: "top",
		    theme_advanced_toolbar_align: "left",
		    theme_advanced_resizing: true,
		    theme_advanced_statusbar_location: "bottom",
		    plugins: "safari,pagebreak,style,layer,table,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
		    content_css: "/css/tiny.css"
		});
		$('input[type=submit]').click(function() {
		    $('#add-form textarea.tiny-start').each(function() {
			try {
			    $(this).val(tinyMCE.getInstanceById(this.id).getContent());
			} catch(err) {}
		    });	
		});
	    });
	    jQuery.ajaxSettings.cache = false;
	}
    }
return {
    init: function() {
	if ($('#add-form').size() > 0) initForm();
	initTable();
	initTiny();
	initTinyStart();
    }
}
})();

var IndexHot = (function() {
    var obj = null;
    var nextButton = null;
    var previousButton = null;
    var initListners = function() {
	nextButton.click(function() {
	    goNext();
	});
	previousButton.click(function() {
	    goPrevious();
	});
    }
    var goNext = function() {
	obj.css('left', '-978px').prepend(obj.find('li:last'));
	obj.animate({ left: '-500px' });
	$(obj.find('li')[1]).animate({ marginRight: '18px' });
	$(obj.find('li')[1]).find('i.shadow').animate({ opacity: 0 }, { complete: function() { $(this).hide(); } });
	$(obj.find('li')[2]).find('i.shadow').show().animate({ opacity: 0.6 });
	obj.find('li:first').animate({ marginRight: '640px' });
    }
    var goPrevious = function() {
	obj.find('li:first').animate({ marginRight: '18px' });
	$(obj.find('li')[1]).animate({ marginRight: '640px' });	
	$(obj.find('li')[1]).find('i.shadow').show().animate({ opacity: 0.6 });
	$(obj.find('li')[2]).find('i.shadow').animate({ opacity: 0 }, { complete: function() { $(this).hide(); } });
	obj.animate({ left: '-978px' }, { complete: function() {
	    obj.append(obj.find('li:first')).css('left', '-500px');
	} });
    }
return {
    init: function() {
	obj = $('#hot-flat ul');
	obj.find('li:first').css('margin-right', '640px');
	$(obj.find('li')[1]).find('i.shadow').css('opacity', 0).hide();
	nextButton = $('#hot-flat a.next');
	previousButton = $('#hot-flat a.previous');
	initListners();
    }    
}
})();

function GMap(sSelId) {
    var _selector = this._selector = '#' + sSelId;
    var _map = null;
    var _oThis = this;
    var infoWindow = null;
    
    this.ready = false;
    
    this.getMap = function() {
	return _map;
    };
    
    function showInfoWindow(point, item) {
	var winHtml = getGWinHtml(item);
	_map.openInfoWindowHtml(point, winHtml, {
	    onOpenFn: function() {
		try {
		    var iw = _map.getInfoWindow();
		    iw.reset(iw.getPoint(), iw.getTabs(), new GSize(480, 130), null, null);
		    $(iw.rc[0]).parent().parent().css('opacity', '0.8');
		    //_map.setCenter(point, 15);
		} catch(err) {}
	    }
	});
	//if (winHtml) marker.openInfoWindowHtml(winHtml);
    }
    
    this.createMarker = function(point, item) {
	var marker = new GMarker(point);
	if (item) {
	    GEvent.addListener(marker, "click", function() {
		showInfoWindow(point, item);
	    });
	}
	$(item).find('a.map').click(function() {
	    showInfoWindow(point, item);
	    window.scrollTo(0, $('#map').offset().top);
	    _map.setCenter(point, 14);
	    return false;
	});
	return marker;
    };
    
    this.clearPointers = function() {
	_map.clearOverlays();
    }
    
    this.init = function(key) {
	try { 
	    if (!_oThis.ready && $(_selector).size() !=0) {
		google.load("maps", "2", {"callback": function() {
		    _map = GMLoad();
		    _oThis.ready = true;
		    _oThis.checkPoint();
		    if (key) _oThis.setPoint();
		}});
	    } else {
		_map = GMLoad();
	    }
	} catch (err) {};
    };
    
    (function($) {
	$.fn.isGCStr = function (name) {
	    return ($(this).attr(name) && $(this).attr(name) != '') ? true : false;
	}
    })(jQuery);
    
    function getGWinHtml(tr) {
	var winHTML = [];
	winHTML.push("<div class='gWin'><img src='" + $(tr).attr('photo') + "' alt=''><div>");
	if ($(tr).isGCStr('address')) winHTML.push("<p><b>Адрес:</b> "+ $(tr).attr('address')+ "</p>");
	if ($(tr).isGCStr('metro_name')) winHTML.push("<p><b>Метро:</b> "+$(tr).attr('metro_name')+"</p>");
	if ($(tr).isGCStr('full_area')) winHTML.push("<p><b>Общая площадь:</b> "+$(tr).attr('full_area')+" м&sup2;</p>");
	if ($(tr).isGCStr('price')) winHTML.push("<p><b>Цена:</b> " + $(tr).attr('price') + "</p>");
	if ($(tr).isGCStr('uid')) winHTML.push("<p><a href='"+ $(tr).find('a.open-descr').attr('href') + ">посмотреть объявление</a></p>");
	winHTML.push("</div></div>");
	return winHTML.join(' ');
    };
    
    function GMLoad() {
	if ($(_selector).size() !=0 && GBrowserIsCompatible()) {
	    var map = new google.maps.Map2($(_selector)[0]);
	    map.setCenter(new google.maps.LatLng(55.75,37.6), 9);
	    var mapControl = new google.maps.MapTypeControl();
	    map.addControl(mapControl);
	    map.addControl(new google.maps.LargeMapControl());
	    geocoder = new google.maps.ClientGeocoder();
	    infoWindow = map.getInfoWindow()
	    return map;
	} else {
	    return null;
	}
    }
}

GMap.prototype.checkPoint = function() {
    var oThis = this;
    if (oThis.ready) {
	var map = oThis.getMap();
	var isShowMap = $(oThis._selector).size() != 0 && map;
	if (isShowMap) {
	    map.clearOverlays();
	    $('#results').find('.item').each(function(){
		var lng = $(this).find('input[name=lng]').val();
		var lat = $(this).find('input[name=lat]').val();
		var isMarker = lng && lat && lng != '' && lat != '' && ((lng - 0) != 0 && (lat - 0) != 0);
		if (isMarker) {
		    var point = new google.maps.LatLng(lng, lat);
		    map.addOverlay(oThis.createMarker(point, this));
		} else {
		    $(this).find('a.map').empty();
		}
	    });
	    map.setCenter(new google.maps.LatLng(55.75,37.6), 9);
	}
	$('#map div.loading').hide();
    }
}

GMap.prototype.setPoint = function() {
    var oThis = this;
    var map = oThis.getMap();
    var lng = $('#map-mod').attr('lng');
    var lat = $('#map-mod').attr('lat');
    var isMarker = lng && lat && lng != '' && lat != '' && ((lng - 0) != 0 && (lat - 0) != 0);
    if (isMarker) {
	var point = new google.maps.LatLng(lng, lat);
	map.setCenter(point, 15);
	map.addOverlay(oThis.createMarker(point));
    }
}
var tempGMap = null;
function noticeMods() {
    var MAP = null;
    function showMap() {
	$('#obj-gallery').css({ position: 'absolute', top: '0', left: '0', visibility: 'hidden' });
	$('#obj-service').attr('class', 'map');
	$('#obj-map').show();
	if (!MAP) {
	    MAP = new GMap('obj-map');
	    MAP.init(true);
	}
    }
    function showGallery() {
	$('#obj-service').attr('class', 'gallery');
	$('#obj-gallery').css({ position: 'relative', visibility: 'visible' });	
	$('#obj-map').hide();
    }
    if ($('#obj-map').size() > 0) {
	$('#map-mod').click(function() {
	    showMap();
	    return false;
	});
	$('#gallery-mod').click(function() {
	    showGallery();
	    return false;
	});
	if (window['noPhoto']) {
	    showMap();
	    $('#gallery-mod').remove().empty();
	}
    }
}

function loadMaps() {
    function showAddress(map, address) {
	if (geocoder) {
	    geocoder.getLatLng(
		address,
		function(point) {
		    if (!point) {
			map.clearOverlays();
		    } else {
			map.setCenter(point, 15);
			var marker = new GMarker(point);
			map.addOverlay(marker);
			//marker.openInfoWindowHtml(address);
		    }
		}
	    );
	}
    }
    try { 
	google.load("maps", "2", {"callback": function() {
	    geocoder = new google.maps.ClientGeocoder();
	    $('#s-gmap').each(function() {
		var map = new GMap2(this);
		showAddress(map, $(this).attr('title'));
	    });
	}});
    } catch (err) {};
}
function initMapForAddress() {
    function initLoader(key) {
	var script = document.createElement("script");
	script.src = "http://www.google.com/jsapi?key=" + key + "&callback=loadMaps";
	script.type = "text/javascript";
	document.getElementsByTagName("head")[0].appendChild(script);
    }
    (document.location.href.match('akvarti')) ? initLoader('ABQIAAAAKz3_xVof9utcw0Du1FJakBRlBrdoMOvsMD7t0cvb9V3Rmpvc1RRsHlcYVAITHEcOvduWaZbDqZNfLw') : initLoader('ABQIAAAAKz3_xVof9utcw0Du1FJakBR5mfuiLljNCG1MQO1IRfHbSXGt6RTQntHTu36e89FKfIe1BMMiLlOZUA');
}

function centerFly(obj) {
    obj.css({ 'display': 'block', 'visibility': 'hidden' });
    var width = obj.width();
    var height = obj.height();
    obj.css({ 'position': 'absolute', 'top': '50%', 'left': '50%', 'margin': -height/2 + 'px 0 0 ' + -width/2 + 'px' });
    if ((obj.position().top - height/2) < 50) obj.css({ 'top': '50px', 'margin-top': 0 });
    obj.css({ 'display': 'none', 'visibility': 'visible' });
}
function showFly(obj) {
    $('#shadow-bg').css({ display: 'block', opacity: 0 }).animate({ opacity: .3 });
    centerFly(obj);
    obj.show();
}
function hideFly(obj) {
    $('#shadow-bg').animate({ opacity: 0 }, { complete: function() { $('#shadow-bg').hide() } });
    obj.hide();
}

$(document).ready(function() {
    $('#index-b1').click(function() {
	showFly($('#lease-form'));
    });
    $('#index-b2').click(function() {
	showFly($('#rent-form'));
    });
    $('#lease-form a.close, #rent-form a.close').click(function() {
	hideFly($(this).parent().parent());
    });
    
    if ($('#control').size() > 0) Core.init();
    if ($('#lease-form').size() > 0) FormRequest.init($('#lease-form'));
    if ($('#rent-form').size() > 0) FormRequest.init($('#rent-form'));
    if ($('#map area').size() > 0) initMap();
    initAuthForm();
    if ($('#hot-flat').size() > 0) IndexHot.init();
    if ($('.admin').size() > 0) Admin.init();
    if ($('#form').size() > 0) initObjectForm();
    if ($('#obj-gallery').size() > 0) {
	$('#obj-gallery').galleryView({
	    panel_width: 637,
	    panel_height: 424,
	    frame_width: 100,
	    frame_height: 100
	});
	if ($('#obj-gallery .panel img').size() == 1) {
	    $('#obj-gallery .strip_wrapper, #pointer').hide();
	    $('#obj-gallery').css('height', '436px');
	}
    }

    $('#delete-link').click(function() {
	var link = $(this).attr('href');
	$.get(link, null, function() {
	    document.location.href = '?act=search';
	});
	return false;
    });

    if ($('#map.google').size() > 0) {
	tempGMap = new GMap('gmaps');
	tempGMap.init();
	//tempGMap.checkPoint($('#map'));
    }
    if ($('#obj-service').size() > 0) noticeMods();
    if ($('.text-page#object').size() > 0) {
	initMapForAddress();
    }
    var STM_COUNTER = 0;
    function getNotices() {
	function getArea(oItem) {
	    switch (oItem.type) {
		case 'room':
		    return '(общ./жил./кух./комната): ' + oItem.area.full + '/' + oItem.area.leave + '/' + oItem.area.kitchen + '/' + oItem.area.room;
		case 'flat':
		    return '(общ./жил./кух.): ' + oItem.area.full + '/' + oItem.area.leave + '/' + oItem.area.kitchen;
		default:
		    return '(общ./жил./кух.): ' + oItem.area.full + '/' + oItem.area.leave + '/' + oItem.area.kitchen;
	    }
	}
	if ($('#control input[name=room]').val().split(',').length == 2) $('#control input[name=room]').val('');
	if ($('#control input[name=room_count]').val().split(',').length == 6) $('#control input[name=room_count]').val('');
	var metroStations = '';
	if ($('#control input[name=metro_station]').val()) {
	    var stations = $('#control input[name=metro_station]').val().split(' ');
	    for (var i = 0; i < stations.length; i++) {
		metroStations += ('&metro_station_id[]=' + stations[i]);
	    }
	}
	$('#control form').ajaxSubmit({
	    url: '/index.php?act=output&p=1' + metroStations,
	    dataType: 'text',
            beforeSubmit: function() {
		STM_COUNTER++;
	    },
            success: function(data, status) {
		data = eval('(' + data + ')');
		if (data.data.items && data.data.items.length > 0) {
		    $('#fast-notices').html('');
		    for (var i = 0; i < data.data.items.length && i < 5; i++) {
			var __item = data.data.items[i];
			var img = (__item.photos.names[0] != 'no-photo.gif') ? '<a href="/?module=single_notice&act=lease_' + __item.type + '&uid=' + __item.id + '"><img src="' + __item.photos.small_path + __item.photos.names[0] + '" alt=""></a>' : '';
			var sFlat = (__item.type == 'room') ? 'Комната в ' + __item.rooms + ' квартире' : __item.rooms + ' комнатная квартира';
			$('#fast-notices').append($('<div class="item"><p class="fast-data"><span class="metro"><i>&nbsp;</i>' + __item.metro + '</span>Цена: <strong>' + __item.payment.price + ' ' + __item.payment.currency + '</strong></p>' + img + '<p><a href="/?module=single_notice&act=lease_' + __item.type + '&uid=' + __item.id + '"><strong>' + sFlat + '</strong></a><br>' + getArea(__item) + ' м²</p></div>'));
		    }
		    $('#col-right h2.fast-notice span').html('(' + data.list.count + ')');
		    $('#fast-notices').append('<p class="all"><a href="#" class="all">Все предложения (' + data.list.count + ')</a></p>')
		} else if (STM_COUNTER <= 1) {
		    $('#filter-buiding-type input[name=metro_station]').val('');
		    getNotices();
		}
            },
            error: function(XHR) {
            }
	});
    }
    if ($('#fast-notices').size() > 0) {
	getNotices();
	$('#control input[type=submit]').click(function() {
	    $('#control form').append('<input type="hidden" name="act" value="search">');
	});
	$('#fast-notices').delegate('a.all', 'click', function() {
	    $('#control form').append('<input type="hidden" name="act" value="search">');
	    $('#control form')[0].submit();
	    return false;
	});
    }
});
