// Список объявлений
var listing=[]
// Параметры запроса списка объявлений
var listingParam={}
// Списки загруженных разделов
var sections={add:[],buy:[],sale:[]}
// Путь к текущему отображаемому разделу
var sectionPath=[]
// Список сортамента по разделам
var articles={add:[],buy:[],sale:[]}
// Режим работы загрузки разделов
var selectMode='sale'
var oldSelectMode=''
// Шаблон полной информации по объявлению
var infoTpl=''
// Текущая выбранная строка
var current=-1
var overtimer=null
var infotipover=false
var overtimeout=500
// Загрузка списка объявлений
function loadListing(){
	var id=listingParam['sectionId']
	$('#listingdata tbody').html('<tr><td>Загрузка...</td></tr>')
	$.getJSON( currentPage+'/'+id+'/'+listingParam['page']+'/'+listingParam['sort'][0]+'_'+listingParam['sort'][1]+'/'+listingParam['filter'], function(data){
		listing=data.listing
		listingParam=data.param
		//document.title=listingParam.articleName+' | '+(selectMode=='sale'?'Продажа':'Покупка')+' | Торговая площадка - ТОРЖИЩЕ';
		str=''
		for(i=0;i<listing.length;i++){
			rating=''
			if( listing[i].ratingplus!=0)
				rating+='<span class="plus">'+listing[i].ratingplus+'</span>'
			if( listing[i].ratingminus!=0)
				rating+=(rating!=''?' / ':'')+'<span class="minus">'+listing[i].ratingminus+'</span>'
			if( rating!='' )
				rating=' <span class="rating">[ '+rating+' ]</span>'
			if(i%2==1)clas='even';else clas='odd'
			str+='<tr id="traderow'+i+'" class="'+clas+'">	\
			<td>'+listing[i].date+'</td>\
			<td class="price">'+listing[i].price+' руб.</td>\
			<td><a class="infolnk" href="/trade/info/'+listing[i].id+'" target="trademesinfo'+listing[i].id+'">'+listing[i].article+'</a></td> \
			<td>'+listing[i].city+'</td> \
			<td>'+listing[i].trader+' <a class="opinion" title="Просмотреть отзывы" rel="facebox" href="/trade/commentlist/'+listing[i].trader_id+'" target="tradecomment">'+rating+' <img src="/img/trade/comment.png" width="16" height="16" /></a></td> \
			</tr>';
		}
		if( listing.length==0 ){
			str="Ничего не найдено"
		}
		$('#listingdata tbody').html(str)
		current=-1
		//tradeInfo($('#traderow0'))
		$('#listingdata tbody a[rel*=facebox]').facebox()
		//$('#listingdata tbody tr').click(function(){tradeInfo(this)})
		$('#listingdata tbody tr').hover(function(){tradeInfoOv(this)},function(){overtimer=setTimeout( function(){tradeInfoOu(this)},overtimeout )})
		//$('#tech img').attr('src','/'+data.buttons.image)
		//id1=id<0?listingParam.sectionId:id
		//link=$('#tech').attr('href').split('/');
		//link[link.length-1]=id1
		//$('#tech').attr('href',link.join('/') )
		//link=$('#graph').attr('href').split('/');
		//link[link.length-1]=id1
		//$('#graph').attr('href',link.join('/') )
		//link=$('#pricel').attr('href').split('/');
		//link[link.length-1]=listingParam.sectionId
		//$('#pricel').attr('href',link.join('/') )
		$('#sorting a').each(function(){
			link=$(this).attr('href').split('/');
			link[3]=id
			$(this).attr('href',link.join('/') )
		})
		$('#tech .header').text(data.buttons.sectionnameone)
		//$('#graph .header').text(data.buttons.sectionname)
		$('.head').text(data.buttons.sectionname)
		$('#avgprice .header').text(data.buttons.sectionname)
		$('#avgprice .price').text(data.buttons.avgprice)
		$('#paginator').html(data.paginator)
	})
}
// Получение информации по объявлению
function tradeInfo(obj){
	obj=$(obj)
	if( !obj.attr('id') ) return; // Не задана строка
	if(current!=-1){
		// Удаляем выделение
		$('#traderow'+current).removeClass('sele');
		// Удаляем блок с инфорацией
		$('#traderow'+current).next().remove()
	}
	clicked=obj.attr('id').substr(8)
	if( current==clicked ){
		// Была нажата таже строка
		current=-1
	}else{
		obj.addClass('sele');
		current=clicked
		// Строим строку контактов
		contact=''
		if( listing[current].email!='' ) contact='<a href="mailto:'+listing[current].email+'">'+listing[current].email+'</a>'
		if( contact!='' && listing[current].phone!='') contact+=', '
		contact+=listing[current].phone
		// Добавляем объект
		// Отрисовываем по шаблон TODO
		str='<table border="1" class="trade" width="90%">\
			<thead><tr><th>Наименование</th><th>Длина</th><th>Сталь</th><th>Контакт</th><th width="50%">Примечание</th></tr></thead>\
			<tbody><tr><td>'+listing[current].article+'</td><td>'+listing[current].param1+'</td><td>'+listing[current].param2+'</td><td>'+contact+'</td><td>'+listing[current].comment+'</td></tr>\
			</tbody></table>';
		obj.after('<tr><td colspan="'+$('td',obj).length+'">'+str+'</td></tr>' );
	}
	return false
}
// Загрузка списка разделов
// id - идентифкатор секции
// obj - объект, куда загружаем
function loadSection( id, obj ){
    $(obj).nextAll().each(function(){$('div',this).html('')})
	if( selectMode!='add' ){
		el=$('select[name=article_id]')
	}else{
		el=$('#facebox select[name=article_id]')
	}
	$('option',el).remove()
	$('input[name=otherarticle_id]').attr('disabled','disabled').hide()
	if( !sections[selectMode][id] ){
		$('div',obj).html('Загрузка...')
		$.getJSON( currentPage+'sections/'+id+'/'+(selectMode=='add'?1:0), function(data){
			if(data.length!=0){
				sections[selectMode][id]=data
				buildSection(id,obj)
			}else{
				loadArticles(id)
			}
		})
	}else{
		buildSection(id,obj)
	}
	return false;
}
// Строим список раздела
function buildSection(id,obj){
    str='<ul>';
	if( false && selectMode!='add' ){
		str+='<li><a href="/trade/'+selectMode+'/'+id+'" class="selected">Все</a></li>'
	}
    for( i=0; i<sections[selectMode][id].length;i++ ){
        str+='<li><a href="/trade/'+selectMode+'/'+sections[selectMode][id][i]['id']+'">'+sections[selectMode][id][i]['name']+'</a></li>';
    }
    $('div',obj).removeClass('disable').html( str+'</ul>' )
	if( sections[selectMode][id].length==0 ){
		if( selectMode=='add' )
			loadArticles(id)
	}
    $(obj).each( function(){multiselectLink(this)} )
    return false;
}
// Загрузка сортамента
function loadArticles(id){
	if( !articles[selectMode][id] ){
		$.getJSON( currentPage+'sectionarticles/'+id+'/'+(selectMode=='add'?1:0), function(data){
			articles[selectMode][id]=data
			buildArticles(id,1)
		})
	}else{
		buildArticles(id,1)
	}
	return false;
}
// Построение выбора товара
function buildArticles(id,sec){
	if( selectMode!='add' ){
		el=$('select[name=article_id]')
	}else{
		el=$('#facebox select[name=article_id]')
	}
	$('option',el).remove()
	if( selectMode!='add' ){
		//el.append( '<option value="0>'+sectionName+'</option>' );
	}
    for( i=0; i<articles[selectMode][id].length;i++ ){
		el.append( '<option '+(i==1?'selected="selected" ':'')+'value="'+articles[selectMode][id][i]['id']+'">'+articles[selectMode][id][i]['name']+'</option>' );
	}
	if( selectMode=='add' ) el.append( '<option value="_'+id+'">Другое...</option>' );
	if( selectMode=='add' ){
		checkOther()
		el.change(checkOther)
	}else{
		//listingParam['sectionId']=id
		listingParam['sectionId']=articles[selectMode][id][1]['id']
		loadListing()
	}
}
// Устанавливаем обработку сыслок в мультиселекте
function multiselectLink(el){
    $('a',el).click(function(){
		// Назначаем классы выбранного элемента
		$('a',el).removeClass('selected')
		$(this).addClass('selected')
		id=this.href.split('/')[5]
        obj=$(el).next()
		obj=$(obj).next();
        if( obj.length!=0 ){
            loadSection( id, obj );
        }else{
			//if( selectMode=='add' )
			loadArticles(id)
		}
		listingParam['sectionId']=id
		//if( selectMode!='add' )loadListing()
		//if( selectMode!='add' && obj.length==0 )loadListing()
        return false;
    })
	return false
}
// Изменение сортировки объявлений
function changeSort(obj){
	$('#sorting a').removeClass('sort'+listingParam['sort'][1])
	selectedSort=$(obj).attr('href').split('/')
	listingParam['sectionId']=selectedSort[3]
	selectedSort=selectedSort[5].split('_')[0]
	if( selectedSort==listingParam['sort'][0] ){
		listingParam['sort'][1]=listingParam['sort'][1]==0?1:0
	}else{
		listingParam['sort'][0]=selectedSort
	}
	$(obj).addClass('sort'+listingParam['sort'][1])
	loadListing()
	return false
}
// Проверка выбран ли товар для ввода пользователем
function checkOther(){
	val=$('select[name=article_id] option:selected','#facebox').val()
	if(!val)return
	if( val.substr(0,1)=='_' ){
		$('input[name=otherarticle_id]','#facebox').removeAttr('disabled').show()
	}else{
		$('input[name=otherarticle_id]','#facebox').attr('disabled','disabled').hide()
	}
}
function loadBySelect(){
	listingParam['page']=1;
	val=$('select[name=article_id] option:selected').val()
	if(val!=0){
		listingParam['sectionId']=$('select[name=article_id] option:selected').val();
	}
	loadListing()
}
// Инициализируем
$(document).ready(function(){
	//$(".messages ul").liScroll();
	$(".messages ul").scrolltext({time:4000,timeout:3000});
	//$('#mainmenu').kwicks({max:90,duration:300});
	$("#slideinformerbutton").click(function () {
	  if( $('body').find('#slidei').length==0 ){
		$('body').append('<div id="slidei" style="position:absolute;z-index:999;width:95px;display:none;">'+$("#slideinformer").clone().html()+'</div>');
		$('#slidei').append($(this).clone(true));
		$('#slidei').css( 'left', $(this).offset().left )
		$('#slidei').css( 'top', $(this).offset().top )
	  }
	  $('#slidei').slideToggle('normal');
    });

	// Создаем мультивыбор разделов
    //$('.multiselect .block').each(function(){multiselectLink(this)})
	// Загружаем шаблон добавления товара
	//$('body').append('<a name="addform" /><div id="addform"></div>')
	//$('#addform').load('/trade/add')
	// Загружаем шаблон полной информации по объявлению
	//$.get('/trade/info',function(data){infoTpl=data})
	// Событие на открытие вкладки с полной инфой по объявлению
	$('#listingdata tbody tr[id*="traderow"]').live('click',function(e){
		if(e.target.tagName!='a' && e.target.className!='comm'){
			var obj=$('a.infolnk',this)
			var w=window.open( obj.attr('href'), obj.attr('target') )
			if(w)w.focus()
			e.stopPropagation()
			return false
		}
		return true
	})
	$('#listingdata tbody tr').hover(function(){tradeInfoOv(this)},function(){overtimer=setTimeout( function(){tradeInfoOu(this)},overtimeout )})
	$('#infotip').hover(function(){infoOv()},function(){infoOu()})
	// Событие на смену сортироки
	$('#sorting a').click(function(){return changeSort(this)})
	// Получение информации по объявлению в первой строке
	//tradeInfo( $('#traderow0') )
	// Обработка поиска
	$('#filtering form').submit(function(){listingParam['filter']=$('#filtering input[name=filter]').val();loadListing();return false;})
	// Устанавливаем строку фильтра при загрузке
	$('#filtering input[name=filter]').val(listingParam['filter'])
	// Ввод другого товара
	$('#article_id').change(checkOther)
	// Устанавливаем события для всплывающих окон
	$('a[rel*=facebox]').facebox()
})
function infoOu(){
	overtimer=setTimeout(tradeInfoOu,overtimeout)
	infotipover=false
	return false
}
function infoOv(){
	clearTimeout(overtimer)
	infotipover=true
	return false
}
function tradeInfoOv(obj){
	clearTimeout(overtimer)
	obj=$(obj)
	if( !obj.attr('id') ) return; // Не задана строка
	if(current!=-1){
		// Удаляем выделение
		$('#traderow'+current).removeClass('sele');
	}
	overed=obj.attr('id').substr(8)
	if( current!=overed ){
		info=$('#infotip')
		info.hide();
		obj.addClass('sele');
		current=overed
		// Строим строку контактов
		contact=''
		if( listing[current].email!='' ) contact='<a href="mailto:'+listing[current].email+'">'+listing[current].email+'</a>'
		if( contact!='' && listing[current].phone!='') contact+=', '
		contact+=listing[current].phone
		// Добавляем объект
		// Отрисовываем по шаблон TODO
		str='<div class="inf">Информация по объявлению</div><table border="1">\
			<tbody>\
				<tr class="o"><td class="label">Наименование</td><td>'+listing[current].article+'</td></tr>\
				<tr><td class="label">Длина</td><td>'+listing[current].param1+'</td></tr>\
				<tr class="o"><td class="label">Сталь</td><td>'+listing[current].param2+'</td></tr>\
				<tr><td class="label">Контакт</td><td>'+contact+'</td></tr>\
				<tr class="o"><td class="label">Примечание</td><td>'+listing[current].comment+'</td></tr>\
				<tr><td class="foot" colspan="2"><a target="trade'+listing[current].id+'" href="/trade/info/'+listing[current].id+'">открыть в окне</a></td></tr>\
			</tbody></table>';
		$('#infotip').html(str);
		pos=obj.position()
		pos.left+=obj.width()-info.width()-25
		pos.top-=info.height()+7
		info.css(pos)
		info.show();
	}
	return false
}
function tradeInfoOu(obj){
	if(infotipover)return false
	$('#infotip').hide();
	if(current!=-1){
		// Удаляем выделение
		$('#traderow'+current).removeClass('sele');
		current=-1
	}
	return false
}
function changeCity(){
	listingParam['filter']=$('#selectcity').val()
	document.location.replace(currentPage+'/'+listingParam['selectedId']+'/'+listingParam['page']+'/'+listingParam['sort'][0]+'_'+listingParam['sort'][1]+'/'+listingParam['filter'])
}

