// submenu
function showSubMenu(_a, point) {
	clearMenuTimer();
	var x = web.getNodePosition(_a).left - 7;
	if (_a.parentNode.className == 'on')
		x += 1;
	var y = web.getNodePosition(_a).top;

	if (submenus[point][0][1] != "#")
		web.$("floatMenuTitlePoint").innerHTML = '<a href="' + submenus[point][0][1] + '">' + submenus[point][0][0] + '</a>';
	else
		web.$("floatMenuTitlePoint").innerHTML = '<div>' + submenus[point][0][0] + '</div>';

	var menu = "";
	for (i = 1; i < submenus[point].length; i++)
		menu += '<a href="' + submenus[point][i][1] + '"' + ((i + 1 == submenus[point].length) ? ' class="last"' : '') + '>' + submenus[point][i][0] + '</a>';

	web.$("floatMenuBody").innerHTML = menu;

	web.$("floatMenuTitle").style.left = x + "px";
	web.$("floatMenuTitle").style.top = y + "px";
	web.$("floatMenuTitle").style.display = "block";

	web.$("floatMenu").style.left = x + "px";
	web.$("floatMenu").style.top = y + web.$("floatMenuTitle").offsetHeight -1 + "px";
	web.$("floatMenu").style.display = "block";
	
	return false;
}
// Mouseout
var menuTimer = null;
var menuOutInterval = 300;
function clearMenuTimer() {
	clearTimeout(menuTimer);
	menuTimer = null;
}
function mouseOutHandler(yep) {
	if (!yep) {
		menuTimer = setTimeout("mouseOutHandler(1)", menuOutInterval);
		return;
	}
	web.$("floatMenu").style.display = "none";
	web.$("floatMenuTitle").style.display = "none";
}


// отсюда и до первых астериксов - Ромин код
function toJSON( obj ) {
	if( obj == null ||
		typeof( obj ) == 'number' || obj instanceof Number ||
		typeof( obj ) == 'boolean' || obj instanceof Boolean ||
		typeof( obj ) == 'function' ) {
	} else {
		if( typeof( obj ) == 'string' || obj instanceof String ) {
			return "'" + obj.replace("\'", "\\\\\\'") + "'";
		}
		var i, result = [];
		if( obj instanceof Array ) {
			for( i = 0; i < obj.length; i++ )
				result[result.length] = arguments.callee( obj[i] );
			return '[' + result.join( ',' ) + ']';
		}
		if( obj instanceof Object ) {
			for( i in obj )
				result[result.length] = i + ':' + arguments.callee( obj[i] );
			return '{' + result.join( ',' ) + '}';
		}
	}
	return '' + obj;
}

// *************** *************** *************** *************** ***************
var timerUserBlock = null;
var intervalUserBlock = 300;
function initUserBlock() {
	var smallUB = web.$('userBlock_small_id');
	var fullUB = web.$('userBlock_full_id');
	if (smallUB && fullUB) {
		web.attachEventListener(
			smallUB,
			'mouseover',
			function() {showHideUserBlock(1);}
		);
		web.attachEventListener(
			smallUB,
			'mousemove',
			function() {clearTimeout(timerUserBlock);}
		);
		web.attachEventListener(
			smallUB,
			'mouseout',
			function() {
				clearTimeout(timerUserBlock);
				timerUserBlock = setTimeout("showHideUserBlock()", intervalUserBlock);
			}
		);
		web.attachEventListener(
			fullUB,
			'mousemove',
			function() {clearTimeout(timerUserBlock);}
		);
		web.attachEventListener(
			fullUB,
			'mouseout',
			function() {
				clearTimeout(timerUserBlock);
				timerUserBlock = setTimeout("showHideUserBlock()", intervalUserBlock);
			}
		);
	}
}
function showHideUserBlock(show) {
	var fullUB = web.$('userBlock_full_id');
	var smallUB = web.$('userBlock_small_id');
	if (fullUB)
		fullUB.style.display = show ? '' : 'none';
	if (smallUB)
		smallUB.style.visibility = show ? 'hidden' : 'visible';
}

// *************** *************** *************** *************** ***************
var consultIndex = { // Namespace
	cur : 0,
	data : [],
	leftArrow : null,
	rightArrow : null,
	titleBlock : null,
	newsBlock : null,
	init : function() {
		this.leftArrow = web.$('left_consult_arrow_id');
		this.rightArrow = web.$('right_consult_arrow_id');
		this.newsBlock = web.$('consultDataId');
		this.titleBlock = web.$('title_consult_id');
		if (this.data.length > 0 && this.leftArrow && this.rightArrow && this.newsBlock) {
			this.leftArrow.style.display = this.rightArrow.style.display = '';
			this.drawAngles();
		}
	},
	right : function() {
		this.cur++;
		this.drawAngles();
		this.change();
		return false;
	},
	left : function() {
		this.cur--;
		this.drawAngles();
		this.change();
		return false;
	},
	drawAngles : function() {
		this.leftArrow.innerHTML  = this.cur == 0
			?
				'<img src="/img/html/0.gif" alt="" />'
			:
				'<a onclick="return consultIndex.left();" href="#"><img src="/img/html/0.gif" alt="Назад" title="Назад" /></a>'
		;
		this.rightArrow.innerHTML = this.cur == this.data.length - 1
			?
				'<img src="/img/html/0.gif" alt="" />'
			:
				'<a onclick="return consultIndex.right();" href="#"><img src="/img/html/0.gif" alt="Вперед" title="Вперед" /></a>'
		;
	},
	change : function() {
		this.titleBlock.innerHTML = '<a href="'+this.data[this.cur].url+'">'+this.data[this.cur].title+'</a>';
		this.newsBlock.innerHTML = '<div class="date">'+this.data[this.cur].news[0][2]+'</div>\
			<div class="title mb10"><div>\
				Вопрос\
			</div></div>\
			<div class="text">\
				'+this.data[this.cur].news[0][1]+'<br />\
				<br />\
				<a href="/v2/consult/view_answer.html?rubric='+this.data[this.cur].rubric+'&id='+this.data[this.cur].news[0][0]+'" class="bold">Прочитать ответ</a>\
			</div>';
	}
};
// *************** *************** *************** *************** ***************
var note = {
	show : function() {
		var div;
		if (!(div = web.$('notes', 1))) {
			div = document.createElement('div');
			div.innerHTML = '<div style="display:none; left:-47px;" id="notes"><div class="body">\
				<div class="title">Отложенные авто<span>(15)</span></div>\
				<div class="frame">\
						\
				</div>\
				<div class="submit">\
					<input type="subm\it" value="" title="Очистить" />\
					<a onclick="return note.hide();" href="#">закрыть</a>\
				</div>\
			</div></div>';
			div.style.position = "absolute";
			web.$('notesOuterId').appendChild(div);
		}
		div = web.$('notes');
		if (div.style.display != 'none')
			this.hide();
		else {
			div.style.display = '';
			//
		}
		return false;
	},
	hide : function() {
		var div;
		if (div = web.$('notes'))
			div.style.display = 'none';
		return false;
	}
}
// *************** *************** *************** *************** ***************
var garage = {
	archive : {},
	get : function(id) {
		if (typeof this.archive[id] == "undefined") {
			this.archive[id] = new this.create(id);
		}
		return this.archive[id];
	},
	preferences : {
		likeModelList : {},
		likeModelDraw : function() {
			if (this.likeModelList.length) {
				var j = 0;
				var m = this.likeModelList.models;
				var itd = Math.floor(this.likeModelList.length / 3) + (this.likeModelList.length % 3 ? 1 : 0) ;
				var html = '<table class="models"><tr><td>';
				for (var i in m) {
					if (j != 0 && j % itd == 0 && j != this.likeModelList.length) html += '</td><td>';
					html += '<div>\
							<a href="/catalogue/model.html?model_id='+i+'"'+(m[i][1] ? ' class="my"' : '')+'><img src="/img/html/0.gif" width="15" height="15" alt="" /><span>'+m[i][0]+'</span></a>\
							<a onclick="return garage.preferences.likeModelDel('+i+');" href="#" class="delete"><img src="/img/html/i/close.gif" alt="Удалить" title="Удалить" /></a>\
						</div>';
					j++;
				}
				html += '</td></tr></table>';
				web.$('likeModelListId').innerHTML = html;
			} else web.$('likeModelListId').innerHTML = '';
		},
		likeModelDel : function(id) {
			if (this.likeModelList.models[id]) {
				delete this.likeModelList.models[id];
				this.likeModelList.length--;
				
				if (this.likeModelList.length < this.allMarkList.maxPrefs)
				  web.$('addModelLink').style.display  = '';
			}
			this.likeModelDraw();
			return false;
		},
		likeModelAdd : function() {
			var id = web.$('like_models_id').value;
			if (id && typeof this.likeModelList.models[id] == 'undefined') {
				this.likeModelList.models[id] = [];
				this.likeModelList.models[id][0] =
					web.$('like_firms_id').options[web.$('like_firms_id').selectedIndex].firstChild.nodeValue + " " +
					web.$('like_models_id').options[web.$('like_models_id').selectedIndex].firstChild.nodeValue
				;
				this.likeModelList.length++;
				this.likeModelDraw();
				
				if (this.likeModelList.length >= this.allMarkList.maxPrefs) 
				  web.$('addModelBlock').style.display = 'none';
			}
			return false;
		},
		toogleAddModel : function(show) {
			web.$('addModelLink').style.display  = show ? 'none' : '';
			web.$('addModelBlock').style.display = show ? '' : 'none';
			return false;
		},
		getModels : function(firmId) {
			if (!firmId) {
				web.$('like_models_id').parentNode.innerHTML = '<select name="model" id="like_models_id" disabled="disabled"><option>Выберите модель</option></select>';
				return;
			}
			var _c = arguments.callee;
			if (!_c.cache) _c.cache = {};
			if (!_c.onResp) {
				_c.onResp = function(o) {
					var options = [];
					options[0] = '<option>Выберите модель</option>\n';
					if (o.models && o.models.length) {
						for (var i = 0; i < o.models.length; i++)
							options[options.length] = '<option value="'+o.models[i].id+'">'+o.models[i].name+'</option>\n'
					}
					web.$('like_models_id').parentNode.innerHTML = '<select name="model" id="like_models_id"'+(options.length > 1 ? '' : ' disabled="disabled"')+'>\
						'+options.join(',')+'\
					</select>';
				}
			}
			if (_c.cache[firmId]) {
  				_c.onResp(_c.cache[firmId]);
				return;
			}
			try {
				var req = web.getHttpRequest();
				req.onreadystatechange = function() {
					if(req.readyState == 4) {
						if(req.status == 200) {
							var res = req.responseText;
							if(!res) return;
							res = eval('(' + res + ')');
							_c.cache[firmId] = res;
							_c.onResp(res);
						} else {
							alert('Невозможно отправить запрос. Попробуйте позже.');
						}
					}
				};
				req.open('get', '/app/main.pl?action=user_catalogue_get_models&firm_id=' + firmId + '&rnd=' + Math.random(), true);
				req.send(null);
			} catch(e) {
				alert('Невозможно отправить запрос. Попробуйте позже.');
			}
		},
		//
		allMarkList : {},
		likeMarkList : {},
		isShowAllOpen : false,
		showAllOpen : function() {
			this.isShowAllOpen = !this.isShowAllOpen;
			web.$('showAllMarksId').innerHTML = this.isShowAllOpen
					?
				'<a onclick="return garage.preferences.showAllOpen();" href="#"><img src="/img/html/i/hide_all.gif" width="12" height="12" alt="" /><span>Оставить популярные</span></a>'
					:
				'<a onclick="return garage.preferences.showAllOpen();" href="#"><img src="/img/html/i/show_all.gif" width="12" height="12" alt="" /><span>Все марки</span></a>'
			;
			this.markDraw();
			return false;
		},
		addMarkItem : function(id, simb, a) {
		  if (this.likeMarkList.length >= this.allMarkList.maxPrefs && !this.likeMarkList.marks[id])
  		  return false;
  		
			if (a) a.className = this.likeMarkList.marks[id] ? '' : 'on';
			
			if (id && this.likeMarkList.marks[id]) {
				delete this.likeMarkList.marks[id];
				this.likeMarkList.length--;
			} else {
				this.likeMarkList.marks[id] = [];
				this.likeMarkList.marks[id][0] = this.allMarkList.marks[simb][id][0];
				this.likeMarkList.marks[id][1] = this.allMarkList.marks[simb][id][1];
				this.likeMarkList.length++;
			}
			this.likeMarkDraw();
			web.$('addMarkLink').style.display = 'none';
			return false;
		},
		delMarkItem : function(id) {
			if (this.likeMarkList.marks[id]) {
				delete this.likeMarkList.marks[id];
				this.likeMarkList.length--;
		  }
			this.likeMarkDraw();
			if (web.$('addMarkBlock').style.display != 'none') web.$('addMarkLink').style.display = 'none';
			this.markDraw();
			return false;
		},
		markDraw : function() {
			var len, k = 1, m, mm, i, j, html='', td1='<table>', td2='<table>';
			if (len = this.allMarkList.simbLength) {
				len = (len + (len % 2)) / 2;
				m = this.allMarkList.marks;

				for (i in m) {
					if (!this.isShowAllOpen && m[i]['isPrimary'] == false)
						continue;
					mm = [];
					for (j in m[i]) {
						if (j == 'isPrimary') continue;
						if (this.isShowAllOpen || this.likeMarkList.marks[j] || m[i][j][2]) mm[mm.length] = '<a onclick="return garage.preferences.addMarkItem('+j+',\''+i+'\', this)" href="#"'+(this.likeMarkList.marks[j] ? ' class="on"' : '')+'>'+m[i][j][0]+'</a>';
					}
					if (k % 2) {
						td1 += '<tr><th><div>'+i+'</div></th><td>';
						td1 += mm.join('<div>|</div>');
						td1 += '</td></tr>';
					} else {
						td2 += '<tr><th><div>'+i+'</div></th><td>';
						td2 += mm.join('<div>|</div>');
						td2 += '</td></tr>';
					}
					k++;
				}
				td1 += '</table>';
				td2 += '</table>';
				web.$('allMarkListId').innerHTML = '<table><tr><td>'+td1+'</td><td>'+td2+'</td><td class="close"><a onclick="return garage.preferences.toogleAddMark();" href="#" title="Закрыть"></a></td></tr></table>';
			}
		},
		likeMarkDraw : function() {
			var m, i, html = '';
			if (this.likeMarkList.length) {
				m = this.likeMarkList.marks;
				for (i in m) {
					html += '<div>\
						<a href="/catalogue/firm.html?firm_id='+i+'"><img src="'+m[i][1]+'" alt="" />'+m[i][0]+'</a>\
						<a onclick="return garage.preferences.delMarkItem('+i+');" href="#" class="delete"><img src="/img/html/i/close.gif" alt="Удалить" title="Удалить" /></a>\
					</div>';
				}
			}
  		html += '<div id="addMarkLink" class="add">\
	  		<a onclick="return garage.preferences.toogleAddMark(1);" href="#"><img src="/img/html/add_firm.gif" alt="" title="Добавить марку" /><span>Добавить марку</span></a>\
		  </div>';
			
			web.$('likeMarkListId').innerHTML = html;
			if (this.likeMarkList.length >= this.allMarkList.maxPrefs)
			  	web.$('addMarkLink').style.display = 'none';
		  
		},
		toogleAddMark : function(show) {
		  web.$('addMarkBlock').style.display = show ? '' : 'none';
		  if (this.likeMarkList.length >= this.allMarkList.maxPrefs)
		    return false;
		  
			web.$('addMarkLink').style.display  = show ? 'none' : '';
			
			return false;
		},
		submitHandler : function() {
			var marks = [];
			for (var i in this.likeMarkList.marks)
				marks[marks.length] = i;
			web.$('s_markListId').value = marks.join(',');

			var models = [];
			for (i in this.likeModelList.models)
				models[models.length] = i;
			web.$('s_modelListId').value = models.join(',');

			var interests = [], el, id;
			var re = /interest_([\d]+)/;
			for (i = 0; i < web.$('formPreferencesId').elements.length; i++) {
				el = web.$('formPreferencesId').elements[i];
				if (el.nodeName.toLowerCase() != 'input') continue;
				if (el.type != 'checkbox') continue;
				if (el.checked && re.test(el.id)) {
					id = el.id.match(re);
					interests[interests.length] = id[1];
				}
			}
			web.$('s_interestListId').value = interests.join(',');
		}
	}
}
garage.create = function(id) { // Namespace
	// Vars
	this.id = id;
	this.cur = 0;
	this.fotos = [];
	// HTML-elements
	this.container = null;
	this.foto = null;
	this.listalka = null;
}

garage.create.prototype = {
	init : function() {
		if (this.fotos.length > 0 && (this.container = web.$(this.id).parentNode)) {
			this.foto = web.$(this.id);
			this._link = this.container.getElementsByTagName('a')[0];
			this.listalka = this.container.getElementsByTagName('div')[0];
			this.drawListalka();
		}
	},
	drawListalka : function() {
		var html = [];
		for (var i = 0; i < this.fotos.length; i++)
			html[html.length] = i == this.cur ? '<u>'+(i+1)+'</u>' : '<a onclick="return garage.get(\''+this.id+'\').set('+i+');" href="#">'+(i+1)+'</a>';
		html = '<i></i>фото: <b>' + html.join('&middot;') + '</b>';
		this.listalka.innerHTML = html;
	},
	set : function(i) {
		if (i < this.fotos.length) {
			this.cur = i;
			// this.foto.src = this.path + this.fotos[i];
			this.foto.style.backgroundImage= "url('" + this.path + this.fotos[i] + "')";
			// до больших не кликаемся. чтобы включить - нужно раскоментить все шаблоны где этот блок фоток есть
			if (this.links && this.links.length > 0) 
  			this._link.href = this.links[i];
			this.drawListalka();
		}
		return false;
	}
}
// *************** *************** *************** *************** ***************
var palette = {
	show : function() {
		var iframe = web.$('forSelectColor');
		iframe.src = "/include/palette.html";
		iframe.style.top = ((web.screenSize().h - 188) / 2 + web.defScroll().y) + 'px';
		iframe.style.left = ((web.screenSize().w - 350) / 2) + 'px';
		iframe.style.display = '';
		return false;
	},
	hide : function() {
		var iframe;
		if (iframe = web.$('forSelectColor'))
			iframe.style.display = 'none';
	},
	setColor : function(color, metall) {
		web.$("paletteTdId").innerHTML = '<div id="color_show_div" style="background-color: '+color+';" onclick="return palette.show();">&nbsp;</div>'+(metall ? 'металлик' : '')+' <a onclick="return palette.show();" href="#">Изменить</a>'
		if (color && color.length) web.$("color_code").value = color;
		web.$("metallic").value = metall ? 1 : 0;
	}
}
// *************** *************** *************** *************** ***************
var market = {
	initRadioControl : function(id) {
		var form, el, div;
		if (form = web.$(id,1)) {
			for (var i = 0; i < form.elements.length; i++) {
				el = form.elements[i];
				if (el.nodeName.toLowerCase() != 'input') continue;
				if (el.type != 'checkbox') continue;
				if (!(div = web.$(el.id + '_r',1))) continue;
				el.onclick = market.chcbClick;
			}
		}
	},
	chcbClick : function() {
		var div, radio;
		if (div = web.$(this.id + '_r',1)) {
			radio = div.getElementsByTagName('input');
			for (var i = 0; i < radio.length; i++) {
				radio[i].checked = false;
				radio[i].disabled = !this.checked;
				if (this.checked && i == 0) radio[i].checked = true;
			}
		}
	},
 
  setGeoCookie : function(country_id, region_id, city_id, cookie_domain) {
    var geoCookieText = [country_id, region_id, city_id].join('_');
    web.setCookie('market_geo', geoCookieText, 60*60*24*60, '/', cookie_domain);
  }

}
// *************** *************** *************** *************** ***************
var rate = {
	div : null,
	show : function(id, a) {
		if (this.div = web.$(id,1)) {
			this.div.style.display = '';
			a.style.display = 'none';
		}
		return false;
	},
	poolingOver : function (e, mark) {
		var p = e.parentNode;
		var img = p.getElementsByTagName('img');
		var _this = this;
		if(!e.poolingInited) {
			e.poolingInited = true;
			e.onmouseout = function() {
				rate.poolingOver(e, 1);
			}
			e.onclick = function() {
				if(!p.clicked ) {
					p.clicked = true;
				}
				var i;
				var cn = 'on';
				var mark;
				for( i = 0; i < img.length; i++ ) {
					img[i].className = cn;
					if( img[i] == this ) {
						mark = i+1;
						cn = '';
						break;
					}
				}
				try {
					var req = web.getHttpRequest();
					//req.setRequestHeader('Content-Type','text/html; charset=windows-1251');
					req.onreadystatechange = function() {
						if(req.readyState == 4) {
							if(req.status == 200) {
								var res = req.responseText;
								_this.div.parentNode.innerHTML = res ? ' Спасибо, ваш голос принят' : ' Вы уже голосовали';
							} else {
								alert('Невозможно отправить запрос. Попробуйте позже.');
							}
						}
					};
					req.open('get', 'http://mail.ru/?mark='+mark+'&rnd=' + Math.random(), true);
					req.send(null);
				} catch(e) {
					alert('Невозможно отправить запрос. Попробуйте позже.');
				}
			}
		}
		if(p.clicked)
			return false;
		var mark = mark == undefined ? true : false;
		for (var i = 0; i < img.length; i++) {
			if (mark && img[i].className.indexOf('hover') == -1)
				img[i].className += ' hover';
			else if (!mark && img[i].className.indexOf('hover') != -1)
				img[i].className = img[i].className.replace(/\s*hover/i, '');
			else if (!mark)
				break;
			if (img[i] == e)
				mark = false;
		}
	}
}
// *************** *************** *************** *************** ***************
var regionsBubble = {
	toogle : function() {
		var div;
		if (div = web.$('regionsBubbleId', 1))
			div.style.display = div.style.display == 'none' ? '' : 'none';
		return false;
	},
	set : function() {

		var sel_regions   = web.$('regionsListId'),
        sel_countries = web.$('countriesListId');

		if (sel_regions.value && sel_regions.value != 0) {
    	web.setCookie('region', sel_regions.value, '+100h');
			location.reload(true);
		}

    else if( sel_countries.value && sel_countries.value != 0 ) {
      web.setCookie('region', ':'+sel_countries.value, '+100h');
			location.reload(true);
    } else {
			alert('Выберите регион');
    }
	}
}

// print version
function setPrintCSS(isPrint) {
    if (document.getElementsByTagName)
        x = document.getElementsByTagName('link');
    else if (document.all)
        x = document.all.tags('link');
    else {
        alert('Простите, этот скрипт не работает в вашем браузере. \nВы можете распечатать страницу, нажав ссылку "Печать" в меню или панели браузера.');
        return;
    }
    for (var i = 0; i < x.length; i++) {
        if(x[i].title == 'printview'){x[i].disabled = !isPrint;}
        if(x[i].title == 'screenview'){x[i].disabled = isPrint;}
    }
    window.scrollTo(0, 0);
    if (isPrint)
        setTimeout("window.print()", 100);
}

if (document.location.hash == '#print')
    setPrintCSS(true);


// indexpage news listing
var ns = { // News Scroll
	cur : 0,
	new_  : null,
	old_  : null,
	wrap  : null,
	table : null,
	cells : [],
	timer : null,
	inited : false,
	initMove : function() {
		try {
			this.new_ = web.$('mainNews_' + this.cur,1);
			this.wrap = web.$('newsWrapperId',1);
			this.new_.style.display = '';
			this.wrap.style.overflow = 'hidden';
			this.wrap.style.width = 
			this.new_.getElementsByTagName('div')[0].style.width = 
			this.old_.getElementsByTagName('div')[0].style.width = 
				this.wrap.offsetWidth + 'px';
		} catch(e) {}
	},
	move : function(y, startY, endY, increare) {
		var percent = y / (endY - startY);
		y = y + 30 + 25 * percent * (increare ? -1 : 1);
		clearTimeout(this.timer);
		this.timer = null;
		if (y > endY) {
			this.old_.style.display = 'none';
			this.wrap.style.overflow = 'visible';
			this.new_.getElementsByTagName('div')[0].style.width = 
			this.old_.getElementsByTagName('div')[0].style.width = 
				'auto';
			this.table.style.marginLeft = '0px';
			this.new_ = this.old_ = null;
			this.controls();
			return false;
		} else {
			if (increare) this.table.style.marginLeft = y + 'px';
			else this.table.style.marginLeft = (-1) * y + 'px';
			this.timer = setTimeout('ns.move('+y+', '+startY+', '+endY+', '+increare+')', 5);
		}
	},
	right : function(y, startY, endY) {
		if (this.new_ != null || this.old_ != null || !this.inited) 
			return false;
		
		this.old_ = web.$('mainNews_' + this.cur);
		this.cur++;
		if (this.cur >= this.cells.length) {
			this.cur--;
			this.new_ = this.old_ = null;
			return false;
		}
		this.initMove();
		this.move(0, 0, this.wrap.offsetWidth, 0);
		return false;
	},
	left : function() {
		if (this.new_ != null || this.old_ != null || !this.inited) 
			return false;
		this.old_ = web.$('mainNews_' + this.cur);
		this.cur--;
		if (this.cur < 0) {
			this.cur = 0;
			this.new_ = this.old_ = null;
			return false;
		}
		this.initMove();
		this.move((-1) * this.wrap.offsetWidth, (-1) * this.wrap.offsetWidth, 0, 1);
		return false;
	},
	init : function() {
		this.table = web.$('mainNewsTable');
		if (this.table) {
			this.cells = this.table.rows[0].cells;
			for (var i = 0; i < this.cells.length; i++)
				this.cells[i].id = 'mainNews_' + i;
			this.inited = true;
		}
	},
	controls : function() {
		web.$('nsControls').getElementsByTagName('a')[0].className = this.cur == this.cells.length - 1 ? "next off" : "next";
		web.$('nsControls').getElementsByTagName('a')[1].className = this.cur == 0 ? "previous off" : "previous";
	}
};

// быстрый подбор авто
var fastsearch = {
	AREA : '_area',
	LIST : '_list',
	TITLE : '_title',
	HIDDEN : '_hidden',
	ERROR : [
		"Невозможно отправить запрос. Попробуйте позже.",
		"Не выбрана марка"
	],
	
	types : {'fs_mark' : null, 'fs_model' : null, 'fs_prise' : null, 'fs_state' : null},
	typesList : ['fs_mark', 'fs_model', 'fs_prise', 'fs_state'],
	
	toggle : function(id) {
		if ( typeof this.types[id] != undefined ) {
			if ( this.types[id] == null )
				this.init(id);
			this.hide(id);
			this.types[id] = !this.types[id];
			web.$(id).style.visibility = this.types[id] ? 'visible' : 'hidden';
			this.load(id);
		}
		return false;
	},
	hide : function(id) {
		for (var i = 0; i < this.typesList.length; i++) {
			if ( this.typesList[i] == id )
				continue;
			this.types[this.typesList[i]] = 0;
			web.$(this.typesList[i]).style.visibility = 'hidden';
		}
		return false;
	},
	init : function(id) {
		this.types[id] = 0;
		
	},
	load : function(id) {
		var _t = this;
		if (id == 'fs_mark' && this.types[id]) {
			web.$(id + this.AREA).className = 'scrollable loading';
			try {
				var req = web.getHttpRequest();
				web.$(id + _t.LIST).innerHTML = '';
				req.onreadystatechange = function() {
					if(req.readyState == 4) {
						if(req.status == 200 && req.responseText) {
							var data = eval('(' + req.responseText + ')'), html = [];
							html.push('<ul class="firms">');
							for (var i = 0; i < data.length; i++) {
								html.push('<li><a onclick="fastsearch.select(\'fs_model\', \'Модель\', \'\'); return fastsearch.select(\'fs_mark\', \''+data[i].f_name+'\', \''+data[i].f_id+'\');" href="#"><img src="'+data[i].f_logo_url+'" alt="" class="IEpng" /><span>'+data[i].f_name+'</span></a></li>');
							}
							html.push('</ul>');
							web.$(id + _t.LIST).innerHTML = html.join('');
						} else { alert(this.ERROR[0]); }
						web.$(id + _t.AREA).className = 'scrollable';
					}
				};
        var user_geo = web.getCookie('market_geo');
        user_geo = ((typeof(user_geo) == 'string') && (user_geo.length > 0)) ? '&user_geo=' + escape(user_geo) : '&use_user_geo=1';
				req.open("get", "/mem/main.pl?action=user_market_do_get_existing_firms" + user_geo, true);
				req.send(null);
			} catch(e) { alert(this.ERROR[0]); }
		}
		if (id == 'fs_model' && this.types[id]) {
			var markId = 0;
			if ( !(markId = web.$(this.typesList[0] + this.HIDDEN).value) ) {
				this.toggle(id);
				alert(this.ERROR[1]);
				return;
			}
			web.$(id + this.AREA).className = 'scrollable loading';
			try {
				var req = web.getHttpRequest();
				web.$(id + _t.LIST).innerHTML = '';
				req.onreadystatechange = function() {
					if(req.readyState == 4) {
						if(req.status == 200 && req.responseText) {
							var data = eval('(' + req.responseText + ')');
              if (data && (typeof(data['models']) != 'undefined'))
                data = data['models'];

              var fld_id = ((data.length > 0) && (typeof(data[0]['id']) != 'undefined')) ? 'id' : 'm_id';
              var fld_name = ((data.length > 0) && (typeof(data[0]['name']) != 'undefined')) ? 'name' : 'm_name';
              var fld_is_popular = ((data.length > 0) && (typeof(data[0]['is_popular']) != 'undefined')) ? 'is_popular' : 'm_is_popular';
              var i;
              var has_two_pop = false;
              var html = [];

              for(i = 0; i < data.length; i++)
                if (data[i][fld_is_popular] != data[0][fld_is_popular]) {
                  has_two_pop = true;
                  break;
                }

              if (has_two_pop) {
      					html.push('<ul class="models">');
                html.push('<li>Популярные модели</li>');
		            for(i = 0; i < data.length; i++)
                  if (data[i][fld_is_popular] && data[i][fld_is_popular] == 1)
  								  html.push('<li><a onclick="return fastsearch.select(\'fs_model\', \''+data[i][fld_name]+'\', \''+data[i][fld_id]+'\');" href="#">'+data[i][fld_name]+'</a></li>');

                html.push('<li style="padding-top:5px;">Другие</li>');
		            for(i = 0; i < data.length; i++)
                  if (!data[i][fld_is_popular] || data[i][fld_is_popular] != 1)
  								  html.push('<li><a onclick="return fastsearch.select(\'fs_model\', \''+data[i][fld_name]+'\', \''+data[i][fld_id]+'\');" href="#">'+data[i][fld_name]+'</a></li>');
  							html.push('</ul>');
              } else {
  							html.push('<ul class="models">');
  							for(i = 0; i < data.length; i++)
  								html.push('<li><a onclick="return fastsearch.select(\'fs_model\', \''+data[i][fld_name]+'\', \''+data[i][fld_id]+'\');" href="#">'+data[i][fld_name]+'</a></li>');
  							html.push('</ul>');
              }

							web.$(id + _t.LIST).innerHTML = html.join('');
						} else {
              alert(this.ERROR[0]);
            }
						web.$(id + _t.AREA).className = 'scrollable';
					}
				};
        var user_geo = web.getCookie('market_geo');
        user_geo = ((typeof(user_geo) == 'string') && (user_geo.length > 0)) ? '&user_geo=' + escape(user_geo) : '&use_user_geo=1';
				req.open("get", "/mem/main.pl?action=user_market_do_get_existing_models" + user_geo + "&firm_id=" + markId, true);
				req.send(null);
			} catch(e) { alert(this.ERROR[0]); }
		}
	},
	select : function(id, name, itemId) {
		web.$(id + this.TITLE).innerHTML = name;
		if (!(id == "fs_model" && !itemId))
			web.$(id + this.TITLE).className = "selected";
		if ( itemId != undefined )
			if ( id == "fs_state" ) {
				web.$("fs_state_new_hidden").value = itemId ? "1" : "";
				web.$("fs_state_old_hidden").value = itemId ? "" : "1";
			} else
				web.$(id + this.HIDDEN).value = itemId;
			
		this.hide();
		return false;
	},
	submit : function() {
		var markId = 0;
//		if ( !(markId = web.$(this.typesList[0] + this.HIDDEN).value) ) {
//			alert(this.ERROR[1]);
//			return false;
//		}
		web.$('fastsearch_form').submit();
		return false;
	}
}

// selected-марки в барахолке
function showSelected(_a, firm_id) {
	var firms = {
		76: "Jaguar",
		85: "Land Rover"
	};

   	if (firm_id) {
		web.$("floatSelected-img").className = "s-" + firm_id;
	   	web.$("floatSelected-img").title = firms[firm_id] + " Selected";
	   	web.$("floatSelected-name").innerHTML = firms[firm_id];
	   	web.$("floatSelected-link").href = "/market/selected.html?firm_id=" + firm_id;
	}

   	var x = web.getNodePosition(_a).left;
   	var y = web.getNodePosition(_a).top;

   	web.$("floatSelected").style.left = x - 5 + "px";
   	web.$("floatSelected").style.top = y - 10 + "px";
   	web.$("floatSelected").style.visibility = "visible";
	return false;
}
function hideSelected() {
   	web.$("floatSelected").style.visibility = "hidden";
	return false;
}
// *************** *************** *************** *************** ***************


// *************** *************** *************** *************** ***************

// Автоматическое изменение размеров видео
(function() {
	var video_width = 626;
	var video_height = 367;
	var video_timer = null;
	var is_handlers_set = false;
	var wrappers = [];
	
	window.resizeVideoInit = function(id) {
		var wrapper = web.$(id, true);
		if (!wrapper) {
			return;
		}
		
		wrappers.push(wrapper);

		if (!is_handlers_set) {
			web.attachEventListener(window, 'load', resizeVideo);
			web.attachEventListener(window,	'resize', function() {
				if (!video_timer) {
					video_timer = setTimeout(resizeVideo, 200);
				}
			} );
			
			is_handlers_set = true;
		}
	};
	
	function resizeVideo() {
		var containers = [];
		var videos = [];
		
		// Готовимся определять доступную ширину
		for (var wrapperIdx=0; wrapperIdx<wrappers.length; wrapperIdx++) {
			var wrapper = wrappers[wrapperIdx];
			var container = containers[wrapperIdx] = wrapper.getElementsByTagName('table')[0];
			var video = videos[wrapperIdx] = wrapper.getElementsByTagName('object')[0];
			container.style.width = '100%';
			video.style.width = '1px';
		}
		
		for (var wrapperIdx=0; wrapperIdx<wrappers.length; wrapperIdx++) {
			var wrapper = wrappers[wrapperIdx];
			var container = containers[wrapperIdx];
			var video = videos[wrapperIdx];
			
			// Определяем доступную ширину
			var available_width = container.offsetWidth;
			container.style.width = '';
			
			if (video_width < available_width) {
				video.style.width = video_width + 'px';
				video.style.height = video_height + 'px';
			}
			else {
				video.style.width = available_width + 'px';
				video.style.height = Math.ceil(available_width/video_width*video_height) + 'px';
			}
		}
		
		video_timer = null;
	}
})();


/* portal header */
// ajs.$
(function(j,f){var h=false,c=" ",k=null,n="string",e=true,g=j.document,O=[].push,s=[].slice,D=/\./g,N=/^\d+/,m=/\s+/,l=/[\r\n\t]/g,M=new RegExp('(^|[^\\\\])((\\\\)*)"',"g"),K=/^\s+/,J=/\s+$/,b="length",o="prototype",E=String[o].trim,d="replace",i="className",r="getElement",H=r+"ById",u=r+"sByClassName",v=r+"sByTagName",y="querySelectorAll",z="EventListener",x="add"+z,F="remove"+z,w=!!g[y],I={fillOpacity:e,fontWeight:e,lineHeight:e,opacity:e,orphans:e,widows:e,zIndex:e,zoom:e},a=function(c,e){var d=this;if(!(d instanceof a))return new a(c,e);else if(c instanceof a)return c;d[b]=0;if(c==="body"){d[0]=g.body;d[b]=1}else if(typeof c===n){d.context=e=e||g;if(c.charAt(0)=="<"){var f=g.createElement("div");f.innerHTML=c;d.push(f.childNodes);f=k}else d.push(t(a(e),c))}else if(c)if(c.nodeType==1||c.nodeType==9){d[0]=c;d[b]=1}else d.push(c);return d};a.gid=1;a.each=function(c,d){for(var a=0,e=c[b];a<e;a++)a in c&&d.call(c[a],a,c[a])};a.extend=function(c){var i=arguments,h=1,j=i[b],g,d,e;if(!j){a.expand(a.fn,c);return this}else{for(;h<j;h++)if(e=i[h])for(d in e)if((g=e[d])!==k&&g!==f)c[d]=g;return c}};a.noop=function(){};a.quote=function(a){return(a+"").replace(M,'"')};a.trim=E?function(a){return a==k?"":E.call(a)}:function(a){return a==k?"":a.toString()[d](K,"")[d](J,"")};a[o]=a.fn={constructor:a,attr:function(c,g){var d=this,a=d[0],i=0,j=d[b],e,h;if(typeof c==n&&g===f){if(a)if(c in a||!("getAttribute"in a))h=a[c];else h=a.getAttribute(c);return h}else{c=B(c,g);for(var i=0,j=d[b];i<j;i++){a=d[i];if(a)for(e in c){g=c[e];if(e in a||!("setAttribute"in a))a[e]=g;else a.setAttribute(e,g)}}return d}},css:function(d,c){var e=this,a=e[0],i=0,j=e[b],h,g;if(typeof d==n&&c===f){g=a&&a.style&&a.style[d]||f;if(N.test(g))g=parseFloat(g);return g}else{d=B(d,c);for(var i=0,j=e[b];i<j;i++){a=e[i];if(a&&(a=a.style))for(h in d){c=d[h];if(c!==""&&!isNaN(c)&&!I[h])c+="px";a[h]=c}}}return e},size:function(){return this[b]},push:function(e,g){var c=this;if(g){var f=a(e);f.prevObject=c;return f}for(var d=0,h=e[b];d<h;d++){c[d]=e[d];c[b]++}return c},each:function(b){a.each(this,b);return this},eq:function(a){return this.push(this[a],1)},filter:function(a){a=a.split(".");return this.push(p(this,a[0],a[1]),1)},find:function(a){return this.push(t(this,a),1)},children:function(c){var a=this;if(a[0]){var b=a[0].childNodes;return a.push(c===f?b:b[c],1)}return a.push(0,1)},end:function(){return this.prevObject||a()},parent:function(){return this.push(this[0]&&this[0].parentNode,1)},html:function(a){return a===f?this[0]&&this[0].innerHTML:this.each(function(){this.innerHTML=a})},val:function(a){return a===f?this[0]&&this[0].value||"":this.each(function(){this.value=a})},append:function(c){var b=this[0];b&&a(c).each(function(){b.appendChild(this)});return this},bind:function(a,b){return A(this,1,a,b)},unbind:function(a,b){return A(this,0,a,b)},trigger:function(a){return this.each(function(){this[a]()})},one:function(b,c){return this.bind(b,function d(){a(this).unbind(b,d);return c.apply(this,arguments)}.bind(this))},hasClass:function(a){a=a[d](l,c).split(m);for(var f=0,g=this[b];f<g;f++)if(q(this[f],a))return e;return h},addClass:function(f){f=f[d](l,c).split(m);for(var j=0,k=this[b],e,g,h=0;j<k;j++){e=this[j];if(e.nodeType==1)if(e[i]){g=(c+e[i]+c)[d](l);for(h=f[b];h--;)if(!~g.indexOf(c+f[h]+c))g+=f[h]+c;e[i]=a.trim(g)}else e[i]=f.join(c)}return this},removeClass:function(g){g=g[d](l,c).split(m);for(var j=0,k=this[b],e,f,h=0;j<k;j++){e=this[j];if(e.nodeType==1&&e[i]){f=(c+e[i]+c)[d](l);for(h=g[b];h--;)f=f[d](c+g[h]+c,c);e[i]=a.trim(f)}}return this},toggleClass:function(a,b){return this[b===f?!this.hasClass(a):b?"addClass":"removeClass"](a)},closest:function(b){var a=this[0],c;if(a){b=b.split(".");c=b[0]?b[0].toUpperCase():h;b=b[1]?b.slice(1):h;do if(a.nodeType==1&&(!c||a.tagName.toUpperCase()==c)&&(!b||q(a,b)))return this.push(a,1);while(a&&(a=a.parentNode)&&a!==g.body)}return this.push(f,1)},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},toggle:function(a){return this[a?"show":"hide"]()},remove:function(){return this.each(function(){this.parentNode&&this.parentNode.removeChild(this)})}};a.get=function(d,e){var c="ajs__jsonp__"+a.gid++,b=g.createElement("script");b.type="text/javascript";b.src=d=d+"&callback="+c;j[c]=function(d){e(d);a(b).remove();j[c]=k;try{delete j[c]}catch(f){}};a("head").append(b)};function q(g,f){if(g.nodeType==1){for(var j=(c+g[i]+c)[d](l,c),a=0,k=f[b];a<k;a++)if(!~j.indexOf(c+f[a]+c))return h;return e}}if(Function[o].bind===f)Function[o].bind=function(a){var b=s.call(arguments,1),c=this;return function(){return c.apply(a,b.concat(s.call(arguments,0)))}};var C={};function A(n,p,d,i){d=d.split(m);var q=n[b],c,k,r=d[b],f,o,l;i.gid=i.gid||a.gid++;for(;q--;)if(c=n[q]){c.ajs=c.ajs||a.gid++;for(k=0;k<r;k++){f=d[k];o=c.ajs+"_"+f+"_"+i.gid;l=C[o]=C[o]||function(a){a=a||j.event;if(!a.target)a.target=a.srcElement||g;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.currentTarget)a.currentTarget=c;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(!a.stopPropagation)a.stopPropagation=function(){this.cancelBubble=e};if(!a.preventDefault)a.preventDefault=function(){this.returnValue=h};if(i.call(c,a)===h){a.preventDefault();a.stopPropagation();return h}};if(c[x])c[p?x:F](f,l,h);else c[p?"attachEvent":"detachEvent"]("on"+f,l)}}return n}function B(a,c){if(c!==f){var b={};b[a]=c;return b}return a}var G=/\[native\s+code\]/i.test(g[u])?function(a,b){return b[u](a)}:function(a,b){return p(b[v]("*"),k,a)};function t(r,e){for(var a,n=[],q=0,u=r[b],f=e.indexOf(c),i=(~f?e.substr(0,f):e)[d](m),j,l,h,o;q<u;q++){h=r[q];if(~f&&w)a=h[y](e);else{l=i.substr(1);j=i.charAt(0);if(j==="#"){a=g[H](l);a=a?[a]:[]}else if(j===".")a=G(l[d](D,c),h);else{o=i.split(".");a=h[v](o[0]);if(~i.indexOf("."))a=p(a,k,o.slice(1));else a=L(a)}}if(a[b]){if(~f&&!w)a=t(a,e.substr(f+1));n=n.concat(s.call(a,0))}}return n}function p(h,f,a){var i=[],g=0,j=h[b],e;if(f)f=f.toUpperCase();if(a&&typeof a==n)a=a[d](D,c).split(m);for(;g<j;g++){e=h[g];e.nodeType==1&&(!f||f==e.tagName.toUpperCase())&&(!a||q(e,a))&&i.push(e)}return i}function L(b){for(var c=[],a=0,d=b.length;a<d;a++)if(a in b)c[a]=b[a];return c}if(!("ajs"in j))j.ajs={};if(!("ui"in ajs))ajs.ui={};j.ajs.$=a})(this);

// ajs.ui.dropdown
(function(d,b){var c="click";function a(d,e){var f="click mouseout mouseover",c=this;d=b(d);if(d.size()>1){d.each(function(){a(this)});return d}if(!(c instanceof a))return new a(d,e);c.opts=e=b.extend({cnLink:"js-link",cnMenu:"js-menu",cnExpand:"js-expand",timeout:1500},e);c.__hide=c._expand.bind(c,false);c.__event=c._event.bind(c);c.$Elm=d;c.$Link=d.find("."+e.cnLink).bind(f,c.__event);c.$Menu=d.find("."+e.cnMenu).bind(f,c.__event)}a.prototype={constructor:a,_event:function(e){var a=this,d=a.opts,f=e.type,h=e.currentTarget,g=a.$Elm.hasClass(d.cnExpand);clearTimeout(a._tid);if(f==c){h===a.$Link[0]&&e.preventDefault();a._expand(!g)}else if(d.timeout>0&&f=="mouseout"&&!b(e.target).closest(d.cnMenu).size())a._tid=setTimeout(a._expand.bind(a,false),d.timeout)},_expand:function(e){var a=this;a.$Elm.toggleClass(a.opts.cnExpand,e);a.$Menu.toggle(e);b(d).unbind(c,a.__hide);e&&setTimeout(function(){b(d).bind(c,this.__hide)}.bind(a),0)}};ajs.ui.dropdown=a})(this.document,ajs.$);

// ajs.ui.search
(function(c,d){var a=".";function b(e,f){var d=this;e=c(e);if(e.size()>1){e.each(function(){b(this)});return e}if(!(d instanceof b))return new b(e,f);d.opts=f=c.extend({cnForm:"js-form",cnInput:"js-input",cnLabel:"js-label",cnBlur:"js-blur",cnSectionTxt:"js-section-text",cnSection:"js-section",cnSectionLink:"js-section-link",cnSectionMenu:"js-section-menu",cnSectionExpand:"js-section-expand",cnSectionSelected:"js-selected",paddingRight:35},f);d.__event=d._event.bind(d);d.$Elm=e;d.$Form=e.find(a+f.cnForm).bind("submit",d.__event);d.$Label=e.find(a+f.cnLabel);d.$Input=e.find(a+f.cnInput).bind("focus blur",d.__event);d.$Section=e.find(a+f.cnSectionTxt);d.$Sections=e.find(a+f.cnSection).bind("click",d._section.bind(d));ajs.ui.dropdown&&ajs.ui.dropdown(e,{cnLink:f.cnSectionLink,cnMenu:f.cnSectionMenu,cnExpand:f.cnSectionExpand});if(f.suggest&&ajs.ui.suggest)d.Suggest=ajs.ui.suggest(e,f.suggest);d._event({type:"blur"});d._section({});d.isReady=true}b.prototype={constructor:b,_event:function(e){var a=this,d=e.type,b=a.isEmpty(),c=d=="blur"&&b;if(d=="submit"&&b){a.$Input.trigger("focus");e.preventDefault()}else{a.$Elm.toggleClass(a.opts.cnBlur,c);c&&a.val("")}},_section:function(e){var h="offsetWidth",b=this,g=b.opts,i=e.target,f=g.cnSectionSelected,d=c(i).closest(a+g.cnSection);if(i){b.$Sections.filter(a+f).removeClass(f);d.addClass(f)}if((d=b.$Sections.filter(a+f))[0]){b.$Form.attr({action:d.attr("data-action"),target:d.attr("data-target")||"_self"});b.$Input.attr("name",d.attr("data-input-name"));b.$Section.html(d.html());b.Suggest&&b.Suggest.set("ajaxUrl",d.attr("data-suggest-url"),!b.isReady)}b.$Section[0]&&b.$Input.css({width:b.$Label.attr(h)-b.$Section.attr(h)-g.paddingRight});if(e&&e.preventDefault){e.type=="click"&&b.$Input.trigger("focus");e.preventDefault()}},isEmpty:function(){return this.val()==""},val:function(a){if(a!==d){this.$Input.val(a);return this}return c.trim(this.$Input.val())}};ajs.ui.search=b})(ajs.$);

// ajs.ui.suggest
(function(a,e){var g="data-suggest",f="data-suggest-idx",c=false,b=".";function d(g,h){var f=this;g=a(g);if(g.size()>1){g.each(function(){d(this)});return g}if(!(f instanceof d))return new d(g,h);f.opts=h=a.extend({cnInput:"js-input",cnSuggest:"js-suggest",cnList:"js-suggest-list",cnSelected:"js-suggest-selected",cnInternet:"js-suggest-internet",getData:function(a){return a&&a[1]=="OK"&&a[2]},template:function(c,b){return'<div data-suggest="'+a.quote(b)+'">'+b.text.replace(c,"<b>"+c+"</b>")+"</div>"},request:function(b,c){a.get(b,c)},timeout:300,expire:0,autosubmit:true,ajaxUrl:e,searchUrl:"http://go.mail.ru/search?mailru=1&rch=l&q=#query#",onselect:a.noop},h);f._cache={};f.$Elm=g;f.$Input=g.find(b+h.cnInput).attr("autocomplete","off").bind("blur focus click keyup keydown",f._event.bind(f));f.$Suggest=g.find(b+h.cnSuggest).bind("mouseup mousedown",function(a){this._down=a.type!="mouseup"}.bind(f));f.$Internet=g.find(b+h.cnInternet);f.$List=g.find(b+h.cnList).bind("click",f._selectByClick.bind(f));h.expire&&setInterval(function(){var a=this;if(a.$Suggest.css("display")=="none"){a.__val=e;a._loadVar=e;for(var b in a._cache){a._cache[b]=c;delete a._cache[b]}}}.bind(f),h.expire)}d.prototype={constructor:d,_event:function(e){var a=this,i=e.type,d=e.keyCode,h=a.opts;clearTimeout(a._tid);if(i=="blur")!a._down&&a.$Suggest.hide();else if(d==38||d==40){i=="keydown"&&a._select(d==38?-1:1);return c}else if(d==13){var g=a.$List.find(b+h.cnSelected);if(g[0]&&a._onselect(e,g[0])===c)return c}else{var f=a.val();if(a._cache[f])a._rebuild(f);else a._tid=setTimeout(function(){this.find(f)}.bind(a),h.timeout)}},_closest:function(a,b){do if(a.nodeType==1&&"getAttribute"in a){b=a.getAttribute(f);if(b>0)return a}while(a&&(a=a.parentNode)&&a!==document.body)},_selectByClick:function(h){var d=this,f=d.opts,i=f.cnSelected,e=a(d._closest(h.target)),j=e.attr(g);if(d._onselect(h,e[0])!==c){d.$List.find(b+i).removeClass(i);d.$Input.trigger("focus");d.val(j);f.autosubmit&&d.$Input.closest("form").trigger("submit")}return c},_select:function(h){var d=this,e=d.opts.cnSelected,c=d.$List.find(b+e),i=d.$List,f=i.children();if(c.size()){c.removeClass(e);c=a(c[0][h>0?"nextSibling":"previousSibling"]).addClass(e)}else c=f.eq(h>0?0:f.size()-1).addClass(e);d.val(c[0]?c.attr(g):d.__val)},_loaded:function(b,c){var a=this;a._cache[b]=a.opts.getData(c);a.val()==b&&a._rebuild(b)},_rebuild:function(d){var b=this,c=b._cache[d];if(b.__val!==d){b.__val=d;if(c&&c.length){for(var e=0,h=c.length,g=[];e<h;e++)g.push(a.trim(b.opts.template(d,c[e])));b.$List.html(g.join("")).children().each(function(a,b){b.setAttribute(f,a+1)})}}b.$Suggest.toggle(!!(c&&c.length))},_onselect:function(d,b){var a=this,h=b.getAttribute(g),e=b.getAttribute(f)-1,c=a._cache[a.val()];return a.opts.onselect({type:"select",target:b,event:d,item:c&&c[e],value:h,suggest:a})},_request:function(a,b){this.opts.request(a,b)},val:function(c){var b=this;if(c!==e){b.$Internet.attr("href",b.opts.searchUrl.replace("#query#",decodeURIComponent(c))).html(c);b.$Input.val(c);c==""&&b.$Suggest.hide();return b}return a.trim(b.$Input.val())},find:function(b){var a=this,c=a.opts.ajaxUrl;if(!c||b=="")a.$Suggest.hide();else if(a._loadVal!=b||a._loadUrl!=c){a._loadUrl=c;a._loadVal=b;a._request(c.replace("#query#",b)+"&"+Math.random(),a._loaded.bind(a,b))}},"set":function(c,d,b){var a=this;a.opts[c]=d;!b&&a.find(a.val());return a},"get":function(a){return this.opts[a]}};ajs.ui.suggest=d})(ajs.$);

