// числовой ИД выбранной фото
var imageSelectedId = 0;
// массив с предзагруженными фото
var images = new Array();
// первоначальный ИД большой фото
var bigPhotoId = 'iPhoto';
// выбранный пункт "нижнего" меню
var bMenuSelected = 0;

// инициализация приложения
// photoCount - количество мини-фото на странице
function init(photoCount) {
	// перебираем все мини-фото
	for(var i = 1; i < photoCount+1; i ++) {
		// и удаляем их все
		var id = 'p' + i;
		$(id).innerHTML = '';
	};
	// удаляем большую фото
	$('photo').innerHTML = '';
}

// обновляет картинки на странице
// pageId - текстовый ИД странцы
// subpageId - текстовый ИД раздела на странце
// photoCount - количество мини-фото на странице
function loadImageList(pageId, subpageId, photoCount) {
	// УРЛ по которому должен обращаться ajax
	var ajaxUrl = '../ajax/ajax.php';
	// определяем параметры, передаваемые серверу
	var params = 'pageId=' + pageId + '&subpageId=' + subpageId + '&photoCount=' + photoCount;
	// создаем ajax запрос
	new Ajax.Request(ajaxUrl, {
		// задаем метод запроса
		method: 'POST',
		// задаем параметры, передаваемые серверу
		parameters: params,
		// при получении ответа
		onComplete: function(transport) {
			// преобразуем полученный ответ в объект
			var t = transport.responseText.evalJSON(true);
			// очищаем все имеющиеся предзагруженные мини-фото
			images = new Array();
			// перебираем все новые мини-фото
			for(var i = 0; i < t.imageList.length; i ++) {
				// определяем ИД контейнера для мини-фото и ссылок на мини-фото
				var id = 'p' + t.imageList[i];
				// определяем ИД мини-фото
				var idIm = 'i' + t.imageList[i];
				// определяем ИД ссылки на мини-фото
				var idA = 'a' + t.imageList[i];

				// если текущая картинка должна быть выбрана
				if(t.def == t.imageList[i]) {
					// запоминаем её числовой ИД
					imageSelectedId = t.imageList[i];

					// линк на картинку блокировки превьюшки
					var src = '../data/' + pageId + '/preview.gif';
					// создаем Node картинки блокировки превьюшки
					var img = createImage(idIm, isWidth, isHeight, t.altList[i], src);
					// добавляем новую картинку
					$(id).appendChild(img);

					// линк на большую фото
					var src = '../data/' + pageId + '/' + subpageId + '/' + t.imageList[i] + '-b.jpg';
					// создаем Node новой большой фото
					var img = createImage(bigPhotoId, iWidth, iHeight, t.altList[i], src);
					// добавляем созданнй Node на экран
					$('photo').appendChild(img);
				}
				else {

					// определяем линк на мини-фото
					var src = '../data/' + pageId + '/' + subpageId + '/' + t.imageList[i] + '-s.jpg';
					// создаем объект картинки мини-фото
					var img = createImage(idIm, isWidth, isHeight, t.altList[i], src);

					// создаем объект ссылки на картинку
					var href = 'javascript:selectPhoto(\'' + t.imageList[i] + '\', pageId, subpageId)';
					var link = createSmallLink(href, idA);
					// добавляем картинку в ссылку
					link.appendChild(img);
					// добавляем созданнй Node на экран
					$(id).appendChild(link);
				};
				// добавляем ИД и url на мини-фото в массив предзагрузок
				images[i] = new Array(t.imageList[i], '../data/' + pageId + '/' + subpageId + '/' + t.imageList[i] + '-b.jpg');
			};
			// чекез 0,1 сек. подгружаем все большие фото
			setTimeout('imagesPrelod();', 100);
		}
	});
}

// создает Node ссылки
// href - сам КРЛ
// id - ИД ссыки
function createSmallLink(href, id) {
	// создаем элемент A
	var link = document.createElement('A');
	// задаем атрибуты
	link.href = href;
	link.id = id;
	// возвращаем созданный элемент
	return link;
}

// создает Node мини-фото
// id - ИД картинки
// w - ширина картинки
// h - высота картинки
// alt - альтарнативный текст
// src - УРЛ картинки
function createImage(id, w, h, alt, src) {
	// создаем элемент A
	var img = document.createElement('IMG');
	// задаем атрибуты
	img.id = id;
	img.width = w;
	img.h = h;
	img.alt = alt;
	img.title = alt;
	img.src = src;
	// возвращаем созданный элемент
	return img;
}

// создает Node большой фото
// id - ИД картинки
// w - ширина картинки
// h - высота картинки
// alt - альтарнативный текст
// src - предзагруженная картинка
// className - имя класса
function createBigImage(id, w, h, alt, src, className) {
	// создаем элемент A
	var img = document.createElement('IMG');
	// задаем атрибуты
	img.id = id;
	img.width = w;
	img.h = h;
	img.alt = alt;
	img.title = alt;
	img.src = src.src;
	img.style.filter = 'alpha(opacity=0)';
	img.style.opacity = '0';
	img.className = className;
	// возвращаем созданный элемент
	return img;
}

// обрабатываем смену раздела на странице
//pageId - текстовый ИД страницы
//subpageId - текстовый ИД раздела на странице
//photoCount - кол-во мини-фото на странице
function chSubMenu(pageId, subpageId2, photoCount) {
	// перебираем все элемениы мены подразделов
	for(var i = 0; i < subMenuItems.length; i ++) {
		var nav = $('n-' + subMenuItems[i]);
		// помечаем, что они не выбраны
		nav.removeClassName('active');
	};

	// определяем ИД выбранного пункта подменю
	var id = 'n-' + parseInt(subpageId2.substr(0,2));
	// помечаем его активным
	var nav = $(id).addClassName('active');

	// инициализируем прилождение
	init(photoCount);
	subpageId = subpageId2;
	// обновляем все фото на странице
	loadImageList(pageId, subpageId2, photoCount);
}

// "обертка" для реализации эффекта Fade
// idFadeImage - ИД прозрачной картинки
// bigPhotoId - ИД старой большой картинки
function fade(idFadeImage, bigPhotoId, rmId, speed) {
	// код запуска эффекта Fade
	var tmp = 'setOpacity("'+ idFadeImage+'",'+0+',"' + bigPhotoId + '","' + rmId + '", ' + speed + ')';
	// запускаем Fade через 0,001 сек
	setTimeout(tmp, speed);
	// завершаем функцию
	return false;
}

// меняем прозрачность картики (эффект Fade)
// idFadeImage - ИД прозрачной картинки
// value - новое значение прозрачности
// bigPhotoId - ИД старой большой картинки
function setOpacity(idFadeImage, value, bigPhotoId, rmId, speed)
{
	// если картинка полностью не прозрачна
	if(value >= 11) {
		// удаляем старую большую картинку
		removeOldImage(bigPhotoId, idFadeImage, rmId);
		// завершаем работу эффекта
		return;
	};
	// меняем прозрачность новой фото
	$(idFadeImage).style.opacity = value/10;
	$(idFadeImage).style.filter = 'alpha(opacity=' + value*10 + ')';
	// уменьшаем значение прозрачности новой фото
	value = value + 1;
	// запускаем Fade через 0,001 сек
	var tmp = 'setOpacity("'+ idFadeImage+'",'+value+',"' + bigPhotoId + '", "' +  rmId + '", ' + speed + ')';
	setTimeout(tmp, speed);
}

// удаляем старую болшую фото
// id - ИД старой большой фото
// newId - ИД новой болшлй фото
function removeOldImage(id, newId, rmId){
	// удаляем старую большой фото
	if ($(id)) {
		$(rmId).removeChild($(id));
	};
	// меняем класс новой болшлй фото
	$(newId).removeClassName('fade');

}

// осуществляем предзагрузку всех больших фото
function imagesPrelod(){
	// временный массив с загруженными изображениями
	var preloaded = new Array();
	// перебираем все большие фото
	for(var i = 0; i < images.length; i ++){
		// создаем новый объект - картинка
		preloaded[images[i][0]] = new Image();
		// считываем в память саму картинку
		preloaded[images[i][0]].src = images[i][1];
	};
	// запоминаем получившейся массив предзагруженных картинок
	return images = preloaded;
}

// выбор конкретной фото
// id - числовой ИД фотографии открываемой фото
// pageId - текстовый ИД странцы
// subpageId - текстовый ИД раздела на странце
function selectPhoto(id, pageId, subpageId) {
	// новый ИД большой фото
	var bigPhotoIdNew = 'iPhoto'+id;
	// если пользователь открывает фотографию, отличную от уже открытой
	if(bigPhotoId != bigPhotoIdNew) {

		// определяем объекты открываемой мини-фото и ссылки на открывамую фото
		var imgOld = $('i'+id);
		var linkOld = $('a'+id);

		// линк на картинку блокировки превьюшки
		var src = '../data/' + pageId + '/preview.gif';
		// создаем Node картинки блокировки превьюшки
		var img =  createImage(imgOld.id, imgOld.width, imgOld.height, imgOld.alt, src);
		// удаляем старую ссылку с картинкой
		$('p' + id).removeChild(linkOld);
		// добавляем новую картинку
		$('p' + id).appendChild(img);

		// определяем ИД мини-фото, которыя была выбрана
		var idIm = 'i' + imageSelectedId;
		var idA = 'a' + imageSelectedId;
		// определяем объект открытой мини-фото
		var imgOld = $(idIm);

		// создаем объект картинки
		var src = '../data/' + pageId + '/' + subpageId + '/' + imageSelectedId + '-s.jpg';
		var img = createImage(idIm, isWidth, isHeight, imgOld.alt, src);

		// создаем объект ссылки на картинку
		var href = 'javascript:selectPhoto(\'' + imageSelectedId + '\', pageId, subpageId)';
		var link = createSmallLink(href, idA);

		// добавляем картинку в ссылку
		link.appendChild(img);

		// удаляем старую картинку
		$('p' + imageSelectedId).removeChild(imgOld);
		// точнее, заменяеем её ссылкой на новую
		$('p' + imageSelectedId).appendChild(link);

		// объект уже открытой большой фото
		var imgBigOld = $('i' + imageSelectedId);
		var altNew = $('i' + id).alt;

		// создаем Node новой большой фото
		var img = createBigImage(bigPhotoIdNew, iWidth, iHeight, imgBigOld.alt, images[id], 'fade');
		// добавляем созданнй Node на экран
		$('photo').appendChild(img);
		// делаем эффект Fade
		fade(bigPhotoIdNew, bigPhotoId, 'photo', 1);

		// запоминаем ИД выбранной мини-фото
		imageSelectedId = id;
		// запоминаем новый ИД большой фото
		bigPhotoId = bigPhotoIdNew;
	}
}

function chBottomMenu(id) {
	$('bt2-form').removeClassName('hide');
	$('bt2-mess').className = 'hide';
	$('bt2-error').className = 'hide';
	$('bt2-error-antibot').className = 'hide';
	if(bMenuSelected == id) {
		$('bl' + bMenuSelected).removeClassName('active');
		$('bt' + bMenuSelected).className = 'hide';
		bMenuSelected = 0;
	}
	else {
		if(bMenuSelected > 0) {
			$('bt' + bMenuSelected).className = 'hide';
			$('bl' + bMenuSelected).removeClassName('active');
		};

		$('bt' + id).removeClassName('hide');
		$('bl' + id).className = 'active';

		bMenuSelected = id;
	};
}

function sendMessage(preUrl) {
	if(!preUrl){
		preUrl = '';
	};
	// УРЛ по которому должен обращаться ajax
	var ajaxUrl = preUrl + 'ajax/sendmail.php?' + 'sendOn=on&name=' + $('fName').value + '&phone=' + $('fPhone').value + '&mail=' + $('fMail').value + '&message=' + $('fMessage').value + '&antibot=' + $('antibot').value;

	// определяем параметры, передаваемые серверу
	// создаем ajax запрос
	new Ajax.Request(ajaxUrl, {
		// задаем метод запроса
		method: 'GET',
		// задаем параметры, передаваемые серверу
		parameters: null,
		// при получении ответа
		onComplete: function(transport) {
			if(1 == transport.responseText ){
				$('bt2-form').className = 'hide';
				$('bt2-error').className = 'hide';
				$('bt2-error-antibot').className = 'hide';
				$('bt2-mess').removeClassName('hide');
			}
			else if (-1 == transport.responseText ){
				$('bt2-form').className = 'hide';
				$('bt2-error').className = 'hide';
				$('bt2-error-antibot').removeClassName('hide');
				$('bt2-mess').className = 'hide';
			}
			else {
				$('bt2-form').className = 'hide';
				$('bt2-error').removeClassName('hide');
				$('bt2-error-antibot').className = 'hide';
				$('bt2-mess').className = 'hide';
			};
		}
	});
}

function loadHomeImageList(imgs, sizes, delay) {
	for(i = 0; i < imgs.length; i++) {
		images[i] = new Array();
		for(j = 0; j < imgs[i].length; j++) {
			// создаем новый объект - картинка
			images[i][j] = new Image();
			// считываем в память саму картинку
			images[i][j].src = 'i/homepage/' + imgs[i][j];
		};
	};

	setTimeout('initRand(sizes, delay);', 1000);
}

function getSection() {
	if(0 == section) {
		return 3;
	}
	else if(3 == section) {
		return 1;
	}
	else if(1 == section) {
		return 5;
	}
	else if(5 == section) {
		return 2;
	}
	else if(2 == section) {
		return 4;
	};

	return 0;
}

function getImgId() {
	if(1 == images[section].length) {
		return 0;
	};

	var imgId = 10000;
	while (true) {
		imgId = Math.random();
		imgId = parseInt(imgId*10);
		if (imgId < images[section].length && selected[section] != imgId) {
			selected[section] = imgId;
			return imgId;
		};
	}
}

function initRand(sizes, delay) {
	var sectionIds = new Array();
	sectionIds[0] = 'weddinghome';
	sectionIds[1] = 'corporativehome';
	sectionIds[2] = 'holidayshome';
	sectionIds[3] = 'portfoliohome';
	sectionIds[4] = 'interiorhome';
	sectionIds[5] = 'othershome';

	section = getSection();
	var imgId = getImgId();

	if(ids[section] != (sectionIds[section] + imgId)) {
		// создаем Node новой большой фото
		var img = createBigImage(sectionIds[section] + imgId, sizes[section][0], sizes[section][1], '', images[section][imgId], '');
		// добавляем созданнй Node на экран
		$(sectionIds[section]).appendChild(img);
		// делаем эффект Fade
		fade(sectionIds[section] + imgId, ids[section], sectionIds[section], 30);

		ids[section] = sectionIds[section] + imgId;
	}

	setTimeout('initRand(sizes, delay);', delay);
}