// ##########################################################
// Основной класс для работы с информацией на странице
// ##########################################################
function cityDom(sSearch, sTable, iType, iOperation, sRooms, sRegions, iMin, iMax, iSort, iPage, iCity, iID, sFnd){
	this.oSearch		= $(sSearch);
	this.oHideSearch	= $('#hide_search');
	this.oTable			= $(sTable);
	this.oTable			= $(sTable + ' .container');
	this.oMap			= $('#map');
	this.oTableItem	= null;
	this.oLoading	= null;
	this.iID		= iID || null;
	this.iType		= iType || 1;
	this.iOperation	= iOperation || 1;
	this.sRooms		= sRooms || '';
	this.sRegions	= sRegions || '';
	this.iMin		= iMin || 0;
	this.iMax		= iMax || 0;
	this.iSort		= iSort || 60;
	this.iPage		= iPage || 0;
	this.iCity		= iCity || 1;
	this.sFnd		= sFnd	|| '';
	this.bAnimate	= true;
	this.oPhotos	= null;
	this.oPhotosBig	= null;
	this.iCurrLoadPhoto	= 0;
	this.bMoneyChange	= false;
	this.oClear		= null;
	this.init();
}

cityDom.prototype = {
	init : function(){
		var oThis	= this;
		if(this.oTable.length > 0){
			var item = $(this.oTable.find('.item')[0]);
			var h	= item.height();
			this.oTableItem	= item;
			// Увеличиваем высоту таблицы в зависимости от размера данных в высоту
			this.oTable.animate({height: h}, 'slow', 'easeout');
			// Устанавниваем события 
			this.mouseOverSet();
			// Создаем слой показывающий загрузку элементов
			$(document.body).append('<div id="load_data"><div id="bg"></div><div id="inner"><div><img src="/images/l.gif" /><p>Загрузка данных...</p></div></div></div>');	
			this.oLoading = $('#load_data');
		}
		this.oSales		= new cityTopSales('topsale', 10, function(id){oThis.loadData(null, id); oThis.hideSearchForm();});
		$('#cities').change(function(){oThis.selectCity(this);});
		this.initSearch();
		this.oHideSearch.find('a').click(function(){return oThis.hideShowSearchForm();});
		$('#sale a').click(function(){cmnPopup(this.href, 'addObject', 500, 500, 'scrollbars=no, resizable=no'); return false;});
		if(this.iID) this.hideSearchForm();
	},
	initSearch : function(){
		var oThis	= this;
		this.oSearchInput	= this.oSearch.find('.lotnum input');
		this.oPriceEdit	= new cityFastEdit('#search .price', function(type, value){oThis.changePrice(type, value);});
		this.oOpSel		= new cityToggleItems('#search .operation', 0, function(value){oThis.changeOperation(value);});
		this.oRoomSel	= new cityToggleItems('#search .flats', 1, function(value, type){oThis.changeRooms(value, type);});
		this.oRegSel	= new cityToggleItems('#search .regions', 1, function(value, type){oThis.changeRegions(value, type);});
		if($('#map')){
			this.oMap		= new cityToggleItems('#map .nav', 0, function(value, type){oThis.changeZoom(value);});
		}
		this.oSearchInput.val(this.sFnd);
		this.oSearchInput.keypress(function(event){return oThis.lotnumEnter(event, this);});
		this.oClear		= this.oSearch.find('.lotnum .clear').click(function(){oThis.sFnd = ''; oThis.oSearchInput.val(''); oThis.loadData(event, ''); return false;});
		this.oSearch.find('.lotnum p a').click(
			function(event){
				var event = event || window.event;
				var vl=$(this).text();
				oThis.oSearchInput.val(vl);
				oThis.loadData(event, '', '', '', vl);
				oThis.oClear.css({display : 'inline'});
				return false;
			}
		);
		var items = this.oSearch.find('.price span');
		if(items.length > 0){
			this.iMin	= Number(this.oPriceEdit.removeSpace($(items[0]).text()));
			this.iMax	= Number(this.oPriceEdit.removeSpace($(items[1]).text()));
		}
	},
	// СМещаем таблицу вправо
	slideData : function(obj, next){
		var oThis	= this;
		obj.animate({left: (this.bAnimate ? '-101%' : '101%')}, 'normal', 'easeout');
		next.animate({left: '0%'}, 'normal', 'easeout', function(){oThis.endSlide();});
		var h = next.height();
		this.oTable.animate({height: h}, 'normal', 'easeout');
	},
	// Загружаем данные
	loadData : function(event, iId, iMoney, sUrl, sFnd){
		var oThis	= this;
		event	= event || window.event || null;
		iId		= iId || '';
		iMoney	= iMoney || 0;
		iMoney	= (this.bMoneyChange ? 0 : iMoney);
		sUrl	= sUrl || '';
		sFnd	= sFnd || this.sFnd;
		if(iId){
			this.iID	= iId;
		}
		var pos = cmnGetAbsolutePos(this.oTableItem[0]);
		pos.x += Math.round((this.oTableItem.width() - 200) / 2);
		pos.y += 100;
		if(event){
			pos.y = event.clientY - 50;
		}
		this.oLoading.css({left: pos.x, top: pos.y}).fadeIn('fast');
		//alert('t:' + this.iType + ' | op:' + this.iOperation + ' | rm:' + this.sRooms + ' | rg:' + this.sRegions + ' | pm:' + this.iMin + ' | pmx:'+ this.iMax + ' | s:' + this.iSort + ' | city:' + this.iCity);
		if(sUrl){
			ps	= sUrl.indexOf('?');
			sUrl		= sUrl.substr(ps, sUrl.length - ps);
			ps	= sUrl.indexOf('page=');
			if(ps > -1){
				var page = '';
				for(var j=(ps + 5), len=sUrl.length; j<len; j++){
					if(isNaN(sUrl.charAt(j))){
						break;
					}else{
						page += sUrl.charAt(j);
					}
				}
				this.iPage = Number(page);
			}
			$.get('/loaddata/' + sUrl + '&cm=0&t='+ this.iType, null, function(data){oThis.endLoadData(data);});
		}else{
			$.get('/loaddata/', 
					{t : this.iType, 
					op:this.iOperation, 
					rm:this.sRooms, 
					rg:this.sRegions, 
					pm: (this.bMoneyChange ? this.iMin : ''), 
					pmx: (this.bMoneyChange ? this.iMax : ''),
					page: this.iPage,
					s:this.iSort,
					city:this.iCity,
					id: iId,
					fnd: sFnd,
					cm: iMoney},
					function(data){oThis.endLoadData(data);}
				);
		}
	},
	// Окончание загрузки данных и анимация
	endLoadData : function(data){
		var ps	= data.indexOf('{-end-}');
		if(ps > 0){
			this.oSearch.empty();
			this.oSearch.append(data.substr(0, ps));
			this.initSearch();
			data	= data.substr(ps + 7, data.length - ps - 6);
		}
		this.oLoading.fadeOut('fast');
		if(this.bAnimate){
			this.oTable.append(data);
			var items = this.oTable.find('.item');
			var item	= items[1];
			item	= $(item).css({left: '101%'});
			this.slideData($(items[0]), item);
		}else{
			this.oTable.prepend(data);
			var items = this.oTable.find('.item');
			var item	= items[0];
			item	= $(item).css({left: '-101%'});
			this.slideData($(items[1]), item);
		}
		var adv = $('#advert_win')[0];
		if(adv){
			if(adv.contentWindow) adv.contentWindow.location.reload();
		}
	},
	// Окончание анимации сдвига
	endSlide : function(){
		var items = this.oTable.find('.item');
		if(this.bAnimate){
			$(items[0]).remove();
		}else{
			$(items[1]).remove();
		}
		this.oTableItem = $(this.oTable.find('.item')[0]);
		this.mouseOverSet();
		this.bAnimate = !this.bAnimate;
	},
	// Определяем события наведения мышкою на строку таблицы
	mouseOverSet : function(){
		var oThis	= this;
		this.oPhotos	= null;
		this.oPhotosBig	= null;
		this.iCurrLoadPhoto	= 0;		
		this.oTableItem.find('tr.sort td').click(function(){oThis.columnSort(this);});
		this.oTableItem.find('.back a').click(function(){
			oThis.loadData(null, '', 0); 
			oThis.showSearchForm(); 
			var flash = thisMovie('flashmap');
			if(flash){
				if(flash.mapStatus() == 1){
					flash.hideSel();
				}
			} 
			return false;
		});
		this.oPhotos = this.oTableItem.find('.photos');
		if(this.oPhotos.length == 0){
			this.oTableItem.find('#pages_nav a').click(function(){oThis.loadData(null, '', 0, this.href); return false;});
			this.oTableItem.find('tr.row').hover(
				function(){
					$(this).addClass('over');
				},
				function(){
					$(this).removeClass('over');
				}
			).click(
				function(event){
					var id = $(this).attr('keywords');
					oThis.showMap(id);
					oThis.loadData(event, id);
					oThis.hideSearchForm();
					return false;
				}
			);
		}else{
			this.oPhotosBig = this.oPhotos.find('.big_photo li');
			this.oPhotos.find('.preview li').hover(function(){$(this).addClass('over');}, function(){$(this).removeClass('over');}).click(function(){oThis.showPhoto(this);});
			this.loadPhotos();
		}
	},
	// Обрабатываем нажатие на сортировочную колонку
	columnSort : function(obj){
		obj	= $(obj);
		var num = Number(obj.attr('keywords')) || 5;
		var desc = obj.find('i.desc').length == 0 ? 1 : 0;
		this.iSort	= num * 10 + desc;
		this.loadData();
	},
	// Если было изменение цены
	changePrice : function(iType, iValue){
		if(iType == 0){
			if(this.iMin != iValue) this.bMoneyChange = true;
			this.iMin	= iValue;
		}else{
			if(this.iMax != iValue) this.bMoneyChange = true;
			this.iMax	= iValue;
		}
		this.loadData(null, '', 1);
	},
	// Изменяем тип операции
	changeOperation : function(iValue){
		this.iOperation = iValue;
		this.sRegions	= '';
		this.loadData(null, '', 1);
		var flash = thisMovie('flashmap');
		if(flash){
			if(flash.mapStatus() == 1){
				flash.newHouses(iValue);
			}
		} 
	},
	// Изменяем кол-во комнат
	changeRooms : function(iValue, bOn){
		bOn		= bOn || false;
		if(!bOn){
			this.sRooms	= this.sRooms.replace(',' + iValue + ',', ',');
			if(this.sRooms.length == 1) this.sRooms = '';
		}else{
			this.sRooms	+= (this.sRooms == '' ? ',' : '') + iValue + ',';
		}
		this.sRegions	= '';
		this.loadData(null, '', 1);
	},
	// Изменяем выбранный регион
	changeRegions : function(iValue, bOn){
		bOn		= bOn || false;
		if(!bOn){
			this.sRegions	= this.sRegions.replace(',' + iValue + ',', ',');
			if(this.sRegions.length == 1) this.sRegions = '';
		}else{
			this.sRegions	+= (this.sRegions == '' ? ',' : '') + iValue + ',';
		}
		this.loadData();
	},
	// Событие прятания или включения формы
	hideShowSearchForm : function(){
		if(this.oSearch.css('display') == 'block'){
			this.hideSearchForm();
		}else{
			this.showSearchForm();
		}
		return false;
	},
	// ПРячем поисковую форму
	hideSearchForm : function(){
		var oThis = this;
		this.oSearch.css({display : 'none'});
		this.oHideSearch.find('a').text('открыть поисковую форму');
		//this.oSearch.slideUp('fast', function(){oThis.oHideSearch.find('a').text('открыть поисковую форму');});
	},
	// Показываем поисковую форму
	showSearchForm : function(){
		var oThis = this;
		this.oSearch.css({display : 'block'});
		this.oHideSearch.find('a').text('скрыть поисковую форму');
		//this.oSearch.slideDown('fast', function(){oThis.oHideSearch.find('a').text('скрыть поисковую форму');});
	},
	// Загружаем фотографию
	loadPhotos : function(){
		while(this.oPhotosBig[this.iCurrLoadPhoto]){
			if(this.oPhotosBig[this.iCurrLoadPhoto].childNodes.length > 0){
				this.iCurrLoadPhoto++;
			}else{
				break;
			}
		}
		if(this.iCurrLoadPhoto < this.oPhotosBig.length){
			var oThis = this;
			var obj	= $(this.oPhotosBig[this.iCurrLoadPhoto]);
			var name	= obj.attr('name');
			var img		= obj.attr('keywords');
			obj.append('<img src="' + img + '" /><h4>' + name + '</h4>');
			obj.find('img').load(function(){oThis.iCurrLoadPhoto++; oThis.loadPhotos();});
		}
	},
	// Показываем фотографию
	showPhoto : function(obj){
		this.oPhotos.find('.preview li.sel').removeClass('sel');
		var idx	= $(obj).addClass('sel').attr('value') || 0;
		this.oPhotosBig.parent().animate({left : idx * (-400)}, 'normal', 'easeout');
	},
	// Делаем быстрый переход по номеру лота
	lotnumEnter : function(event, obj){
		event	= event || windows.event;
		var ret	= true;
		switch(event.which){
/*				case 48 :
				case 49 :
				case 50 :
				case 51 :
				case 52 :
				case 53 :
				case 54 :
				case 55 :
				case 56 :
				case 8 :
				case 0 :
				case 57 : {
					ret	= true;
					break;
				} */
			case 13 : {
				var vl = String($(obj).val());
				if(!isNaN(Number(vl))){
					$(obj).val('');
					this.hideSearchForm();
					this.showMap(Number(vl));
					this.loadData(event, Number(vl));
				}else{
					this.loadData(event, '', '', '', vl);
					this.sFnd	= vl;
					if(vl == ''){
						this.oClear.css({display : 'none'});
					}else{
						this.oClear.css({display : 'inline'});
					}
				}
				break;
			}
		}
		return ret;
	},
	// Выбираем город
	selectCity : function(obj){
		if(obj){
			location.href="?city=" + $(obj).val();
		}
	},
	changeZoom : function(value){
		var flash = thisMovie('flashmap');
		if(flash){
			if(flash.mapStatus() == 1){
				flash.zoomMap(value);
			}
		}
	},
	showMap : function(id){
		var flash = thisMovie('flashmap');
		if(flash){
			if(flash.mapStatus() == 1){
				flash.showHouseById(id);
			}
		}
	}
}

//###########################
// Показываем объекты выбранные во флеше
function showObjectById(id){
	if(citydom){
		res = String(id).split(',');
		citydom.loadData(null, id);
		if(res.length <= 3){
			citydom.hideSearchForm();
		}else{
			citydom.showSearchForm();
		}
	}
}

function thisMovie(movieName){
    if (navigator.appName.indexOf("Microsoft") != -1) {
       return window[movieName];
    } else {
       return document[movieName];
    }
}
