// -----------------------------------------------------------------------------------
//
//	O!Show images v1.0
//	by Isaenko Alexei - http://www.oishow.ru
//	09/12/2011
//
//	For more information on this script, visit:
//	http://www.oishow.ru/download/oishow-images/
//
//	Licensed under the GNU GENERAL PUBLIC LICENSE - http://www.gnu.org/licenses/gpl.html
//	
// -----------------------------------------------------------------------------------

$(function() {

var imgs;
var imgid;
var now;
var imgs = new Array(); // массив со ссылками, title'ами и alt'ами
var scriptPath = function () {
    var scripts = document.getElementsByTagName('SCRIPT'); // ищем ссылки на скрипты
    var path = '';
	 // формируем путь к скрипту
    if(scripts && scripts.length>0) { // перебераем все ссылки
        for(var i in scripts) {
            if(scripts[i].src && scripts[i].src.match(/oishow-images-1\.0\.js$/)) { // ищем наш скрипт
                path = scripts[i].src.replace(/(.*)oishow-images-1\.0\.js$/, '$1'); // убираем из url имя скрипта
            }
        }
    }
    return path; // возвращаем url
};
now = 0; // текущая картинка


// O!Show images
function oishow_images(now)
{
		if(now<1){now = imgs.length-1;} // если дошли до начала переходим последнюю картинку
		if(now>imgs.length-1){now = 1;} // если дошли до конца переходим на первую картинку
		bprev = now-1; // предыдущая ссылка
		bnext = now+1; // следующая ссылка
		if(bprev<1){bprev = imgs.length-1;} // если дошли до начала переходим последнюю картинку
		if(bnext>imgs.length-1){bnext = 1;} // если дошли до конца переходим на первую картинку
		link = imgs[now].split(';'); // массив вида ссылка;заголовок
		title = link[1]; // title картинки
		alt = link[2]; // title картинки
		link = link[0]; // url ссылка
		if(title=='undefined'){title='';} // если заголовок не найден обнуляем его
		if(alt=='undefined'){alt='';} // если заголовок не найден обнуляем его
		newImg = null; // обнуляем переменную
		newImg = new Image(); // создаем новый объект изображения
		newImg.src = link; // указываем путь к изображению
		docHeight = $(document).height()+10; // высота документа/страницы - 10пкс
		winHeight = ($(window).height()); // высота окна
		winWidth = $(window).width(); // ширина окна
		 // проверяем браузер
		IE='\v'=='v';
		if(IE) // браузер IE
		{
			ol =  ' onload="showImage(newImg,winHeight,winWidth)"'; // вызываем функцию, после загрузки изображения
		}
		else
		{
			ol = ''; // для остальный браузеров вызывать функцию другим способом 
		}
		$('#show_img').fadeIn("fast"); // показываем задник основного блока
		
		show_links = 0; // флага, показывать или нет текстовые ссылки следующей и предыдущей картинки
		if(show_links==0) // не показывать
		{
			nums = 	now+'/'+(imgs.length-1);
		}
		else // показывать
		{
		nums = 	'<a onClick="oishow_images('+bprev+')" href="#">предыдущая</a> '+
				now+'/'+(imgs.length-1)+
				' <a onClick="oishow_images('+bnext+')" href="#">следующая</a></div>';
		}		
		// формируем блок в котором все происходит
		$('body').append('<div id="show_img"></div>'); // вставляем в тело страницы главный блок

		$('#show_img').html(
			'<div class="preloader"></div>'+
			'<div class="prev_div" title="Щелкните, что посмотреть предыдущее изображение">'+
			'<div class="prevbutton" title="Щелкните, чтобы закрыть"></div>'+
			'</div>'+
			'<div class="close_div" title="Щелкните, чтобы закрыть">'+
			'<div class="closebutton" title="Щелкните, чтобы закрыть"></div>'+
			'</div>'+
			'<div id="in_show_img">'+
			'<img class="picture" src="'+link+'"'+ol+'/>'+
			'<div class="title">'+title+'</div>'+
			'</div>'+
			'<div class="alt">'+alt+'</div>'+
			'<div class="pages">'+nums+'</div>'+
			'<a href="'+link+'" target="_blank"><div class="blank" title="Открыть изображение в полном размере в новом окне"></div></a>'+
			'<div class="copy"><a href="http://www.oishow.ru/">www.oishow.ru</div>'
		);
// обработчики событий при нажатии на элемент
		$('#show_img .prev_div').click(function(){oishow_images(bprev);});
		$('#show_img .prevbutton').click(function(){oishow_images(bprev);});
		$('#show_img .close_div').click(function(){CloseImg();});
		$('#show_img .closebutton').click(function(){CloseImg();});
		$('#show_img .picture').click(function(){oishow_images(bnext);});
		
// Дизайн: задаем внешний вид всех элементов
		 // главный блок(с задним планом)
		$('#show_img').css({
			position:'fixed',
			top:'0',
			left:'0',
			width:'100%',
			height: winHeight+'px',
			padding:'0',
			margin:'0',
			background: 'url("'+scriptPath()+'images/b90.png")',
			zIndex: '99999',
			color: '#ccc'
		});
		 // кнопка "предыдущая" картинка
		$('#show_img .prevbutton').css({
			position:'absolute',
			top: '10px',
			left: '10px',
			width:'24px',
			height: '27px',
			background:'url("'+scriptPath()+'images/prev.png") center top no-repeat',
			cursor: 'pointer'
		});
		// при наведении на блок меняем изображение кнопки
		$('#show_img .prev_div').hover(
		function(){$('#show_img .prevbutton').css({background:'url("'+scriptPath()+'images/prev.png") center bottom no-repeat'});},
		function(){$('#show_img .prevbutton').css({background:'url("'+scriptPath()+'images/prev.png") center top no-repeat'});}
		);
		 // кнопка "закрыть"
		$('#show_img .closebutton').css({
			position:'absolute',
			top: '10px',
			right: '10px',
			width:'24px',
			height: '27px',
			background:'url("'+scriptPath()+'images/closebutton.png") center top no-repeat',
			cursor: 'pointer'
		});
		// при наведении на блок меняем изображение кнопки
		$('#show_img .close_div').hover(
		function(){$('#show_img .closebutton').css({background:'url("'+scriptPath()+'images/closebutton.png") center bottom no-repeat'});},
		function(){$('#show_img .closebutton').css({background:'url("'+scriptPath()+'images/closebutton.png") center top no-repeat'});}
		);
		$('#show_img .copy').css({
			position:'absolute',
			bottom: '10px',
			left: '10px',
			display: 'block',
			fontSize:'9px',
			zIndex: '9999'
		});
		$('#show_img  a').css({color:'#888',textDecoration:'underline'});
		$('#show_img .blank').css({
			height: 24+'px',
			width: 24+'px',
			padding:'0',
			position: 'absolute',
			bottom: '10px',
			right: '10px',
			border: 'none',
			zIndex: '999',
			background:'url("'+scriptPath()+'images/blank.png") center top no-repeat'
		});
		$('#show_img .blank').hover(
		function(){$('#show_img .blank').css({background:'url("'+scriptPath()+'images/blank.png") center bottom no-repeat'});},
		function(){$('#show_img .blank').css({background:'url("'+scriptPath()+'images/blank.png") center top no-repeat'});}
		);	

		 // блок с описанием
		$('#show_img .alt').css({
			position:'absolute',
			bottom: '30px',
			left: '0',
			width: '100%',
			textAlign: 'center',
			zIndex: '9999'
		});
		 // блок с номером текущего изображения
		$('#show_img .pages').css({
			position:'absolute',
			bottom: '0',
			left: '0',
			width: '100%',
			textAlign: 'center',
			zIndex: '99'
		});
		 // блок для перехода к предыдущей картинке
		$('#show_img .prev_div').css({
			position:'absolute',
			top: '0',
			left: '0',
			width:'50%',
			height: winHeight+'px'
		});
		 // блок для закрытия просмотра
		$('#show_img .close_div').css({
			position:'absolute',
			top: '0',
			right: '0',
			width:'50%',
			height: winHeight+'px'
		});
		$('#show_img .picture').css({cursor: 'pointer'});
		 
		hwsize = 100; // ширина и высота блока с прелоудером
		mtop = Math.ceil((winHeight-hwsize)/2); // отступ прелоудера сверху
		mleft = Math.ceil((winWidth-hwsize)/2); // отступ прелоудера слева
		// блок прелоудера
		$('#show_img .preloader').css({
			position:'absolute',
			top: mtop+'px',
			left: mleft+'px',
			height: hwsize+'px',
			width: hwsize+'px',
			background:'url("'+scriptPath()+'images/preloader1.gif") center center no-repeat'
		});
// END: дизайн

		$('#show_img .picture').hide(); // для эффектного появления сначала скрываем блок с картинкой
		$('#show_img .title').hide(); // скрываем заголовок
		 // вызываем функцию масштабирования изображения, после того как оно загрузилось
		if(IE)
		{
			showImage(newImg,winHeight,winWidth);
		}
		else
		{
			$(newImg).bind("load",function(){
				showImage(newImg,winHeight,winWidth); // проверяем загрузилась ли картинка в браузерах кроме IE
			});
		}
		return false; // предохранитель, что бы браузер не переходил на другую страницу по ссылке
}

function showImage(newImg,winHeight,winWidth)
{
	myWidht = newImg.width; // ширина изображения
	myHeight = newImg.height; // высота изображения
	margin = 30; // отступ от края
	winHeight = winHeight-3*margin; // высота окна с учетом отступа сверху и снизу
	winWidth = winWidth-4*margin; // ширина окна с учетом отступа слева и справа
	 // вычисляем высоту и ширину картинки относительно окна, если ее действительная высота больше высоты окна
	if(myHeight>winHeight){imgHeight = winHeight; imgWidht = Math.ceil(myWidht/(myHeight/imgHeight));}else{imgHeight = myHeight; imgWidht = myWidht;}
	 // вычисляем ширину и высоту картинки относительно окна, если ее фактическая ширина больше ширины окна
	if(imgWidht>winWidth){imgWidht = winWidth; imgHeight = Math.ceil(myHeight/(myWidht/imgWidht));}else{imgWidht = imgWidht; }
	
	margin = Math.ceil((winHeight-imgHeight)/2)+margin; // отступ блока содержащего изображение, заголовок и номер картинки от верхнего края
	bHeight = winHeight+2*margin; // размер блока(равный действительной высоте окна)
	$('#in_show_img').css({
		height: bHeight+'px',
		width: imgWidht+'px',
		position: 'relative',
		margin:'0 auto'
	});		
	 // блок содержащий картинку
	$('#show_img .picture').css({
		height: imgHeight+'px',
		width: imgWidht+'px',
		padding:'0',
		position: 'absolute',
		top: margin+'px',		
		border: 'none',
		align: 'center',
		zIndex: '190'
	});
	margin = margin-$('#show_img .title').height()-5; // отступ заголовка от верхнего края
	left = Math.ceil((imgWidht-$('#show_img .title').width())/2); // выравнивание заголовка по центру
	$('#show_img .title').css({
		position:'absolute',
		top: margin+'px',
		left: left+'px',
		fontSize: '1.2em',
		fontWeight: 'bold'
	});
	$('#show_img').show(); // отображаем главный блок
	if(imgWidht!=0) // если картинка загрузилась, то...
	{
		$('#show_img .picture').fadeIn("slow",function() // эффектное появление картинки
		{
		 // выполняем все действия после появления картинки
			$('#show_img .preloader').hide(); // прячем прелоудер(прятать нужно на случай прозрачных картинок)
		});
		$('#show_img .title').delay(350).show(); // эффектное появление заголовка
	}
	imgWidht = 0; // обнуляем ширину изображения, для того что бы в слудующий раз знать загрузилась ли картинка или нет. если не загрузится, то параметр останется = 0
}
$('#show_img').hide(); // прячем основной блок

i=1; // счетчик для картинок
 // помечаем все ссылки, которые ведут на изображения
$("a").each(function()
{
	what = $(this).attr('href'); // берем url ссылки
	what = what.split('.'); // заносим элементы url'а в массив
	what = what[what.length-1]; // берем последний элемент массива
	if((what == 'jpg')||(what == 'jpeg')||(what == 'gif')||(what == 'png')) // проверяем, является ли ссылка ссылкой на изображение указанного формата
	{
		$(this).addClass("ois_gallery"); // присваиваем ссылке класс галлереи
		$(this).addClass("ois_gallery_"+i); // присваиваем ссылке класс с порядковым номером
		// заносим все ссылки на картинки со страницы в массив
		imgs[i] = $(this).attr('href')+';'+$(".ois_gallery_"+i+" img").attr('title')+';'+$(".ois_gallery_"+i+" img").attr('alt'); 
		i++; // увеличиваем счетчик
	}
});
 // событие, которое происходит при клике по ссылке из "галлерее"
$(".ois_gallery").click(function()
	{
		 // узнаем порядковый номер изображения из "галлереи"
		now = $(this).attr('class').split('ois_gallery_');
		now = parseInt(now[now.length-1]);
		$(this).addClass("ois_selected"); // указываем картинку как выбранную
		oishow_images(now); // вызываем функцию отображения картинки
		return false; // блокируем переход по ссылке
	}
);
 // функция для закрытия блока с картинкой
function CloseImg()
{
	//now = 0;
	$('.ois_selected').removeClass("ois_selected"); // удаляем класс, который говорит о том, что картинка выбрана
	$('#show_img').hide(); // прячем основной блок
}


 // ожидаем нажатие клавиш на клавиатуре
$(document).keyup(function(e)
{
	switch(e.which)
	{
		// стрелка влево
		case 37:
			now = now-2; // предыдущая картинка
			oishow_images(now); // переход
			
		// стрелка вправо
		case 39:
			now = now+1; // следующая картинка
			oishow_images(now); // переход
	}
	if(now<1){now = imgs.length-1;} // коррекция номера предыдущей картинки
	if(now>imgs.length-1){now = 1;} // коррекция номера следующей картинки
});		

});
// END: O!Show images
