var currentPhotoNumber = 1;
var photoCount = 0;
var showSubMenuTimeout = false;
var hideSubMenuTimeout = false;
var curSaved = false;
var subMenuShowDelay = 500;

function stub() {
	alert('Пока не реализовано');

	return false;
}

function getElementClasses(el) {
	var str = el.className;
	str = str.replace(/\s+/g, ' ');
	str = $.trim(str);
	var classes = str.split(' ');

	return classes;
}

function getParamFromElementClass(param, el) {
	var classes = getElementClasses(el);
	var count   = classes.length;
	var length  = param.length;
	var item;

	for (var i = 0; i < count; i++) {
		item = classes[i];
		if (item.substr(0, length) == param && item.substr(length, 1) == '-' && item.length > length + 1) {
			return item.substr(length + 1);
			break;
		}
	}

	return false;
}

function getMenuItems(dropdownOnly) {
	var items = (true === dropdownOnly)
	          ? $('#mnu > UL > LI:has(UL)')
	          : $('#mnu > UL > LI');
	
	return items;
}

function saveCurMenuItem() {
	if (!curSaved) {
		var items = getMenuItems();
		curSaved = items.filter('.cur');
		curSaved.addClass('hide-sub');
	}
}

function restoreCurMenuItem() {
	if (curSaved) {
		curSaved.removeClass('hide-sub');
	}
}

/**
 * Новая версия с полусекундной задержкой появления подменю. В разработке.
 */
function setMenuHandlers() {
	var items = getMenuItems(true);

	items.mouseover(function() {
		$(this).addClass('hovered');
		showSubMenu(this);
	});

	items.mouseout(function() {
		$(this).removeClass('hovered');
		hideSubMenu(this);
	});
}

function clearShowSubMenuTimeout() {
	window.clearTimeout(showSubMenuTimeout);
}

function clearHideSubMenuTimeout() {
	window.clearTimeout(hideSubMenuTimeout);
}

function showSubMenu(item) {
	mnuTimeoutOver = window.setTimeout(function() {showSubMenuCallback(item)}, subMenuShowDelay);
}

function hideSubMenu(item) {
	mnuTimeoutOut = window.setTimeout(function() {hideSubMenuCallback(item)}, subMenuShowDelay);
}

function showSubMenuCallback(item) {
	clearShowSubMenuTimeout();
	item = $(item);

	if (item.hasClass('hovered') && !item.hasClass('cur')) {
		var items = getMenuItems();

		items.addClass('hide-sub');
		item.removeClass('hide-sub').addClass('hover');

		saveCurMenuItem();
	}
}

function hideSubMenuCallback(item) {
	clearHideSubMenuTimeout();
	item = $(item);

	if (!item.hasClass('hovered')) {
		item.removeClass('hide-sub').removeClass('hover');
		restoreCurMenuItem();
	}
}

function showText(textId) {
	if (ie6) {
		return true;
	}

	$('#content UL.block-nav LI').removeClass('cur');
	$('#vehicles-model-section-nav-' + textId).addClass('cur');

	$('#content .text').addClass('hidden');
	$('#vehicles-model-section-text-' + textId).removeClass('hidden');

	return false;
}

function setPhoto(elem) {
	if (!elem.nodeName) {
		elem = $('UL LI.i-' + elem + ' A').get(0);
	}

	var li = elem.parentNode;
	var ul = li.parentNode;
	var items = $('LI', ul);
	var url = elem.href;

	items.removeClass('cur');
	$(li).addClass('cur');

	preloadAndShowPhoto(url);

	var carPhoto = getCarPhotoObject();

	var list = $('DL UL', carPhoto).get(0);
	var zoom = $('.zoom', list).get(0);
	var cmnt = elem.lastChild;
	var bigUrl = cmnt.nodeValue;
	zoomLink = $('A', zoom).get(0);
	zoomLink.href = bigUrl;

	currentPhotoNumber = getParamFromElementClass('i', li);
	var curLi = $('.cur', list).eq(0);
	var curLiCurrent = $('.current', curLi).eq(0);
	var curLiCount   = $('.count', curLi).eq(0);
	curLiCurrent.text(currentPhotoNumber);

	var title = $.trim(elem.title);

	if (title.length) {
		var dt = $('DT', carPhoto);
		dt.text(title);
	}
	
	return false;
}

function setPrevPhoto(link) {
	if (currentPhotoNumber > 1) {
		currentPhotoNumber--;
		setPhoto(currentPhotoNumber);
		$('.car-photo DL .current').text(currentPhotoNumber);
	}

	return false;
}

function setNextPhoto(link) {
	if (currentPhotoNumber < photoCount) {
		currentPhotoNumber++;
		setPhoto(currentPhotoNumber);
		$('.car-photo DL .current').text(currentPhotoNumber);
	}

	return false;
}

function showBigPhoto(link) {
	var url = link.getAttribute('href');

	if ('#' != url.substr(-1)) {
		var width  = 760;
		var height = 252;
		var left = (screen.availWidth - width) / 2;
		var top  = (screen.availHeight - height) / 2;
		var mypopup = window.open(url,'bigPhoto','toolbar=no,scrollbars=no,directories=no,status=yes,menubar=no,resizable=yes,width='
		            + width + ',height=' + height +  ',left=' + left + ',top=' + top);
	}
	else {
		alert('Увеличенное изображение отсутствует.');
	}

	return false;
}

function showCarPhotoNav() {
	var carPhoto = getCarPhotoObject();
	var carPhotoDom = carPhoto.get(0);
	carPhoto.removeClass('no-nav');
	var cmnt = carPhotoDom.lastChild;
	var navCode = cmnt.nodeValue;
	cmnt.parentNode.removeChild(cmnt);
	carPhoto.append(navCode);
}

function getCarPhotoObject() {
	return $('.car-photo').eq(0);
}

function getCarPhotoElement() {
	return getCarPhotoObject().get(0);
}

function setFirstGalleryItemAsCurrent() {
	var elems = $('UL.gallery LI A, UL.colors LI A');
	var count = elems.length;
	photoCount = count;

	if (count) {
		for (var i = 0; i < count; i++) {
			$(elems.get(i).parentNode).addClass('i-' + (i + 1));
		}

		var elem = elems.get(0);

		showCarPhotoNav();

		var carPhoto = getCarPhotoObject();
		var countObj = $('UL .cur .count', carPhoto);
		countObj.text(count);

		setPhoto(elem);
	}
}

function preloadAndShowPhoto(url) {
	if ('#' !== url.substr(-1)) {
		var img = new Image();

		img.onload = function() {
			preloadAndShowPhotoCallback(url);
		};

		img.src = url;
	}
}

function preloadAndShowPhotoCallback(url) {
	$('DIV.car-photo').css('background-image', 'url(' + url + ')');
}

function showPeopleForm(elem) {
	var width = 400;
	var height = 360;
	var left = (screen.availWidth - width) / 2;
	var top = (screen.availHeight - height) / 2;
	var wnd = window.open(elem.href,'','toolbar=no,scrollbars=yes,directories=no,status=no,menubar=no,resizable=yes,width=' + width + ',height=' + height + ',left=' + left + ',top=' + top);

	return false;
}

function initLightbox() {
	$('A.lightbox').lightBox();
}

$(document).ready(function() {
	setMenuHandlers();
	setFirstGalleryItemAsCurrent();
	initLightbox();
});