/**
 * @author alltouch
 */

function Catalog(){
	
	this . options = new Object();
	this . options . url = piro . options . path + 'catalog.php';
	
	this . cacheData = null;
	
	this . init = function(){
		
		//nothing	
	}
	
	this . search = function(obj){
		piro . loading . hidePage('catalog');
		
		if(!obj.query){
			piro . catalog . setEmptySearch();
			return ;	
		}
		
		var data = {
			'type' : 'search',
			'query' : obj.query
		};
		
		if(obj.pageNumber){
			data.page = obj.pageNumber;
		}
		
		if(obj.countItems){
			data.countItems = obj.countItems;
		}
		
		if(obj.sort){
			
			var temp = obj.sort.split('-');
			if(temp.length == 2){
				data . order = {
					'id' : temp[0],
					'value' : temp[1]
				}
			}
		}
		
		piro . ajax(
			piro . catalog . options . url,
			data,
			piro . catalog . set
		);
	}
	
	this . load = function(obj){
		piro . loading . hidePage('catalog');
		
		var data = {
			'type' : 'catalog',
			'id' : obj.pageid
		};
		
		if(obj.pageNumber){
			data.page = obj.pageNumber;
		}
		
		if(obj.countItems){
			data.countItems = obj.countItems;
		}
		
		if(obj.sort){
			
			var temp = obj.sort.split('-');
			if(temp.length == 2){
				data . order = {
					'id' : temp[0],
					'value' : temp[1]
				}
			}
		}
			 
		piro . ajax(
			piro . catalog . options . url,
			data,
			piro . catalog . set
		);
	}
	
	this . setEmptySearch = function(){
		
		var text = '';
		if(piro . page . params . search){
			text += '<h1>Поиск</h1>';
			var q = piro . page . params . query || '';
						
			text += '<div class="search"><input id="f_searchField" value="' + q + '" /><input type="button" value="&nbsp;" id="f_searchButton" /></div>';	
		}
		
		$('#body').html(text);
		piro . loading . showPage('catalog');
		piro . call('NeedResize')
		piro . call('InitStaticBody')
		piro . call('InitCatalogBody')
	}
	
	this . set = function(obj){
		
		
		piro . log(obj);
		
		
		if(obj.banner)
			$('#banner-right').html(obj.banner);
		
		piro . catalog . cacheData = obj;
		
		var original = obj;
		obj = obj.items;
		
		
		var text = '';
		if(piro . page . params . search){
			text += '<h1>Поиск по сайту</h1>';
			var q = piro . page . params . query || '';
						
			text += '<div class="search"><input id="f_searchField" value="' + q + '" /><input type="button" value="&nbsp;" id="f_searchButton" /></div>';
			
			if(obj.length == 0){
				text += '<p class="text">\
					Информация по запросу "' + q + '" не найдена<br/>\
					Рекомендации:\
					<ul class="recomend">\
					<li>Убедитесь в том, что информация введена без ошибок</li>\
					<li>Попробуйте использовать другие слова для запроса</li>\
					</ul>\
				</p>';
				
				$('#body').html(text);
				piro . loading . showPage('catalog');
				piro . call('NeedResize')
				piro . call('InitStaticBody')
				piro . call('InitCatalogBody')
				return ;	
			}
			
			
		}
		
		

		if(obj . length == 0){
			$('#body').addClass('empty-page') . html('<p>Раздел находится в процессе разработки</p>');
			piro . loading . showPage('catalog');
			piro . call('NeedResize')
			return ;
		}
		
		
		
		
		
		var c_countItems = '';
		var l = original . countItems . length;
		for(var i = 0; i < l ; i++){
			var item = original . countItems[i];
			if (item . active) {
				c_countItems += '<option value="' + item . value + '" selected="selected">' + item . name + '</option>';
			} else {
				c_countItems += '<option value="' + item . value + '">' + item . name + '</option>';
			}
		}
		
		var base = '#pageid=' + piro . page . params . pageid;
		if(piro .page . params . codeName){
			base = '#' + piro .page . params . codeName; 
		}
		if(piro .page . params . query){
			base += '&query=' + piro .page . params . query; 
		}
		if(piro . page . params . countItems){
			base += '&countItems=' + piro . page . params . countItems;
		}
		if(piro . page . params . sort){
			base += '&sort=' + piro . page . params . sort;
		}
		var c_paging = '';
		if(original.activePage > 1){
			c_paging += '<a href="' + base + '&pageNumber=' + (original.activePage - 1) + '" class="prev">&laquo;</a>';
		}
		for(var i = 1; i<=original.countPages; i++){
			if( i == original.activePage){
				c_paging += '<a class="opened">' + i + '</a>';
			} else if( i < 4 || i > original.countPages - 3 || (i > original.activePage - 4 && i < original.activePage + 4)){
				c_paging += '<a href="' + base + '&pageNumber=' + i + '">' + i + '</a>';
			} else if( i == original.activePage - 4 || i == original . activePage + 4){
				c_paging += '...';
			}
		}
		
		if(original.activePage < original.countPages){
			c_paging += '<a href="' + base + '&pageNumber=' + (original.activePage + 1) + '" class="next">&raquo;</a>';
		}
		
		var order = '';
		var orderl = original . orderFields . length;
		var params = piro . page . params;
		for(var i = 0; i < orderl && i < 3; i++){
			var item = original . orderFields[i];
			var link = '#pageid=' + params . pageid;
			if(params.search){
				link = '#search&query=' + params.query;
			}
			if(params . countItems){
				link += '&countItems=' + params . countItems;
			}
			link += '&sort=' + item.id + '-';
			
			order += '<span';
			var clas = '';
			if(item.status){
				order += ' class="active"';
			}
			
			var h = link;
			if(!item.status){
				h += 'asc';
			} else if(item.status == 'asc'){
				h += 'desc';
			} else{
				h = h.substr(0, h.length - ('&sort=' + item.id + '-').length);
			}
			order += '><b><a href="' + h + '" class="normal">' + item . name + '</a> <a href="' + link + 'desc" class="less';
			if(item.status && item.status == 'desc'){
				order += ' aless';
			}
			order += '"></a><a href="' + link + 'asc" class="more';
			if(item.status && item.status == 'asc'){
				order += ' amore';
			}
			order += '"></a></b></span>';
		}
		
		text += '\
					<div class="paging">\
						<label>Выводить: <select class="c_countItems">' + c_countItems + '</select></label>\
						' + c_paging + '\
					</div>\
					\
					<div class="order">\
						Сортировать по: ' + order + '\
					</div>';
					
		var length = obj.length;
		for(var i=0; i<length ; i++){
			var item = obj[i];
			var detail = '';
			var l = item.detailInfo.length;
			for(var t = 0; t< l ; t++){
				detail += '<p>' + item.detailInfo[t].name + ': <b>' + item.detailInfo[t].value + '</b></p>'
			}
			
			var underImage = '';
			if(item . isNew){
				underImage = '<div></div>';
			} else if(item . isAction){
				underImage = '<div class="action"></div>';
			}
			
			var addBlock = '<input type="hidden" class="lineId" value="' + i + '" /><input type="hidden" class="productId" value="' + item.id + '" />Кол-во: <input value="1" class="countItems" /> ' + item . unitName + ' <a class="cash"><b>Добавить в корзину</b></a>';
						
			var priceBlock = '';
			if(!piro.auth.cache || !piro.auth.cache.userinfo || !item.price.all){
				var te = item.price.normal + ' грн.';
				if(item.isAction){
					te = item.price.action + ' грн. <i>' + te + '</i>';
				}
				priceBlock = '<div class="rounded-ebdec3">\
									<div class="top"><b></b><i></i></div>\
									<div class="middle">\
										<span>Цена:  <b>' + te + '</b> за 1 ' + item . unitName + '</span>\
									</div>\
									<div class="bottom"><b></b><i></i></div>\
								</div>';
			} else {
				priceBlock = '<table>';
				var l2 = item.price.all.length;
				for(var i2 = 0; i2 < l2; i2++){
					var tItem = item.price.all[i2];
					var cl = '';
					if(tItem . name == 'Цена под реализацию'){
						cl = 'class="two"';
					}
					priceBlock += '<tr>\
										<td class="name">\
											<div class="rounded-ebdec3">\
												<div class="top"><b></b><i></i></div>\
												<div class="middle">\
													<span ' + cl + '>' + tItem.name + '</span>\
												</div>\
												<div class="bottom"><b></b><i></i></div>\
											</div>\
										</td>\
										<td>\
											<div class="rounded-ebdec3">\
												<div class="top"><b></b><i></i></div>\
												<div class="middle">\
													<span> <b><s>' + tItem . value + '</s> грн.</b> <s>за 1 ' + item . unitName + '</s></span>\
												</div>\
												<div class="bottom"><b></b><i></i></div>\
											</div>\
										</td>\
									</tr>'; 
				} 
				priceBlock += '</table>';
			}
			
			text += '\
					<div class="item' + (i == length - 1?' last' : '') + '">\
						<h4>\
							<div class="top"><div><b></b></div></div>\
							<span><b>' + item . category . name + ':</b> <a class="more-about" number="' + i + '">' + item.itemName + ' ('+ item.artikul +')</a></span>\
							<div class="bottom"><div><b></b></div></div>\
						</h4>\
						\
						<div class="ohidden">\
							<div class="image" number="' + i + '">\
								<img src="/data/products' + item.images[0]+ '.s2.jpg" />\
								' + underImage + '\
							</div>\
							' + detail + '\
\
						</div>\
						<p class="descr">\
							' + item . short + ' <a class="more-about" number="' + i + '">Подробнее о товаре <b>&raquo;</b></a>\
						</p>\
						\
						<div class="ohidden">\
							\
							<div class="addToCashBlock">\
								<div class="inCash">Товар добавлен в корзину</div>\
								' + addBlock + '\
								<br/>\
								' + (item . video? '<a class="video" number="' + i + '"><b>Смотреть видео</b></a>' : '') + '\
							</div>\
							\
							<div class="left">\
								' + priceBlock + '\
								\
								<input type="hidden" class="productNumber" value="' + i + '" />\
								<a class="presentLink">Посмотреть наличие</a>\
							</div>\
						</div>\
						\
					</div>\
			';
		}
		
		text += '<div class="paging">\
						<label>Выводить: <select class="c_countItems">' + c_countItems + '</select></label>\
						' + c_paging + '\
				</div>\
				<a class="top">Вверх</a>\
				\
				<div class="bannerLInks">\
					<a href="/main.html#pageid=311" class="right"><img src="/img/catalog/discount.jpg" /></a>\
					<a href="/main.html#pageid=309" class="left"><img src="/img/catalog/delivery.jpg" /></a>\
					<a href="/main.html#pageid=310"><img src="/img/catalog/pay.jpg" /></a>\
				</div>';
		
		$('#body').html(text);
		piro . loading . showPage('catalog');
		piro . call('NeedResize')
		piro . call('InitStaticBody')
		piro . call('InitCatalogBody')
	}
	

}

piro . catalog = new Catalog();

