﻿// iLoad version 2.1 от 02.02.2009
// Подробности о скрипте на http://studioad.ru/index/0-8
// Распространяется бесплатно, согласно лицензии 
// http://creativecommons.org/licenses/by-sa/3.0/
// Автор: Aleko, 2009 год

// Настройки:
var images = "bmp gif jpeg jpg png"; // распознаваемые форматы изображений
var shadowColor = "000000"; //цвет затенения (RGB формат)
var shadowOpacity = 60; //прозрачность тени (от 0 до 100)
var boxColor = "ffffff"; //цвет вьюпорта
var boxCorner = 12; //размер углов и границ в пикселях (от 1 до 25)
var hideFlash = true; //скрытие flash
var keyboard = true; //управление клавиатурой
var loadSource = "http://studioad.ru/js/"; //путь в папку с картинками
var animation = true; //включение анимации
var whtogether = true; //анимировать высоту и ширину одновременно
var cwSpeed = 300; //скорость центрирования вьюпорта(миллисекунды)
var hfSpeed = 200; //скорость появления и скрытия flash
var fsSpeed = 300; //скорость появления тени
var csSpeed = 300; //скорость растягивания тени
var fwSpeed = 400; //скорость появления вьюпорта
var flSpeed = 50; //скорость появления и скрытия лоадера
var fiSpeed = 300; //скорость появления контента
var rwSpeed = 500; //скорость изменения размера вьюпорта
var tgSpeed = 400; //скорость одновременного изменения размеров вьюпорта
var haSpeed = 200; //скорость скрытия вьюпорта и тени
var saSpeed = 400; //скорость слайда панели информации
var faSpeed = 200; //скорость появления панели информации
var fpSpeed = 300; //скорость появления и исчезновения панели управления
var btSpeed = 200; //скорость анимации кнопок 
var detailsShow = true; //отображение панель информации
var detailsColor = "999999"; //цвет текста
var detailsName = "888888"; //вет имени
var detailsSize = 12; //размер текста
var detailsFont = "Trebuchet MS, Arial"; //тип шрифта
var detailsPad = 9; //отступ текста
var slideShow = true; //включение слайдшоу
var slideSpeed = 8000; //cкорость слайдшоу
var slideClose = true; //выключение iload в конце слайдшоу
var butOpacity = 0.4; //прозрачность выключенных кнопок

// Код скрипта
var isMSIE=/*@cc_on!@*/false;
if(isMSIE){document.namespaces.add("v","urn:schemas-microsoft-com:vml");}

var j = jQuery.noConflict();
j(document).ready(function(){

if(boxCorner>30){boxCorner=30}else if(boxCorner<0){boxCorner=0}
if(!animation){cwSpeed=hfSpeed=fsSpeed=fwSpeed=flSpeed=csSpeed=fiSpeed=rwSpeed=haSpeed=saSpeed=faSpeed=fpSpeed=btSpeed=-1;}
var wrapperWidth=150;
var wrapperHeight=150;
var loaderSize=24;
var group=false;
var name=false;
var about=false;
var keys=false;
var iload=false;

// обработка нажатия клавиш

if(keyboard){
	j(document).keydown(function(event){
		var a=event.keyCode;
		var b=String.fromCharCode(a).toLowerCase();
		if(a==27||b=='d'){iloadEnd();}
		if((a==39||b=='c')&&keys){j('#il_next').trigger('click');}
		if((a==37||b=='g')&&keys){j('#il_prev').trigger('click');}
		if((a==16||b=='i')&&keys&&slideShow){j('#il_play').trigger('click');}
		if((a==17||b=='p')&&slideShow){j('#il_stop').trigger('click');}
	});
}

// Поиск необходимых данных

function variables(){
	topScroll=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
	leftScroll=document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;
	windowWidth=j(window).width();
	windowHeight=j(window).height();
	wrapperWidth=j('#il_wrapper').width();
	wrapperHeight=j('#il_wrapper').height();
	offsetLeft=(windowWidth-wrapperWidth)/2+leftScroll;
	offsetTop=(windowHeight-wrapperHeight)/2+topScroll;
};

// Центровка вьюпорта

j(window).resize(function(){checkSize();});	 
function checkSize(){
	variables();
	if(offsetLeft<0){offsetLeft=0}
	if(offsetTop<0){offsetTop=0}
	j('#il_wrapper:visible').animate({top:offsetTop+"px",left:offsetLeft+"px"}, cwSpeed);
	j('#il_shadow:visible').animate({height:windowHeight+"px",width:windowWidth+"px"}, csSpeed);
	j('#il_panel:visible').animate({left:parseInt(j(window).width()/2-125)+"px"}, cwSpeed);
};

// Выключение вьюпорта

function iloadEnd(){
	j('*').stop();
	iload = false;
	keys = false;
	name = false;
	about = false;
	group = false;
	j('#il_panel').fadeOut(fpSpeed);
	j('#il_wrapper').fadeOut(haSpeed, function(){
		j('#il_shadow').fadeOut(haSpeed, function(){
			j('#il_stop').trigger('click');
			j('#il_wrapper').css({opacity:''});
			j('#il_shadow').css({filter:'alpha(opacity='+shadowOpacity+')'});
			j('#il_preload, #il_about').remove();
			if(hideFlash){j('select, embed, object').fadeIn(hfSpeed, function(){j(this).css({visibility:"visible"});});}
		});
	});
};

// Траверсим dom

iloadTravers();
j(document).click(function(){iloadTravers();});
function iloadTravers(){
	j('[rel^="iload"]').unbind('click');
	j('[rel^="iload"]').bind('click',function(event){
		src=j(this).attr('href');
		rel=j(this).attr('rel');
		if(rel.indexOf('::')!=-1){group=rel.split('::')[1];}
		index = j("[rel='iload::" + group + "']").index(this) + 1;
		var e = src.replace(/^.*?\.([a-zA-Z0-9]+)$/, "$1");
		if(images.indexOf(e)>=0){event.preventDefault();iloadStart();if(group==''){group=false;} else {iloadPanel();}}
		title=j(this).attr('title');
		if(title!='undefined' && title!=''){
			if(title.indexOf('::')!=-1){
				var b = title.split('::');
				name = b[0];
				about = b[1];
				if(name==''){name=false;}
				if(about==''){about=false;}
			} else {
				about = title;
			}
		}
	});
};

// Работаем с style

j('body').prepend('<style>#il_li {position:absolute;left:-3000px;top:-3000px;} #il_shadow {z-index:4999;cursor:pointer;position:fixed;top:0;left:0;opacity:'+shadowOpacity/100+';background:#'+shadowColor+';height:'+j(window).height()+'px;width:'+j(window).width()+'px;//position:absolute;top:expression(eval(document.body.scrollTop)+"px");left:expression(eval(document.body.scrollLeft)+"px");} #il_wrapper {position:absolute;z-index:5000;} #il_topcorners, #il_botcorners {margin:0 '+boxCorner+'px 0 '+boxCorner+'px;background:#'+boxColor+';height:'+boxCorner+'px;position:relative;} #il_ltc, #il_lbc {float:left;margin:0 0 0 -'+boxCorner+'px;overflow:hidden;} #il_rtc, #il_rbc {float:right;margin:0 -'+boxCorner+'px 0 0;overflow:hidden;} #il_outer {position:relative;height:100%;background:#'+boxColor+';margin-top:'+parseInt(boxCorner*2)+'px;overflow:hidden;} #il_inner {position:relative;height:100%;overflow:hidden;margin-top:-'+parseInt(boxCorner*2)+'px;} #il_content {margin:0 '+boxCorner+'px -'+parseInt(boxCorner*2)+'px '+boxCorner+'px;} #il_panel {width:250px;height:50px;position:fixed;bottom:10px;left:'+parseInt(j(window).width()/2-125)+'px;//position:absolute; bottom:expression(eval(document.body.scrollTop+10)+"px");z-index:5001;}.il_fill {position:absolute;background:#313131;}#il_count {position:absolute;top:17px;left:8px;color:#484848;font-size:12px;font-family:'+detailsFont+';text-align:center;width:70px;} #il_play{position:absolute;right:119px;top:8px;} #il_stop{position:absolute;right:119px;top:8px;} #il_prev{position:absolute;right:82px;top:8px;} #il_next{position:absolute;right:45px;top:8px;} #il_close{position:absolute;right:8px;top:8px;} .il_panCorner {width:19px;height:19px;position:absolute;}</style>');

// Вставка в DOM

j('body').append('<img id="il_li" src="'+loadSource+'loader.gif"><div id="il_shadow" style="display:none;filter:alpha(opacity='+shadowOpacity+');"></div><div id="il_wrapper" style="display:none;width:'+wrapperWidth+'px;height:'+wrapperHeight+'px;"><div id="il_topcorners"></div><div id="il_inner"><div id="il_outer"><div id="il_content"></div></div></div><div id="il_botcorners"></div><img id="il_loader" src="'+loadSource+'loader.gif" style="position:absolute;top:50%;left:50%;margin:-'+loaderSize/2+'px 0 0 -'+loaderSize/2+'px;"></div><div id="il_panel" style="display:none;"><div class="il_fill" style="height:30px;width:250px;margin:10px 0 10px 0;"></div><div class="il_fill" style="height:50px;width:230px;margin:0 10px 0 10px;"></div><div id="il_count"></div><img src="'+loadSource+'play.gif" id="il_play"><img src="'+loadSource+'stop.gif" id="il_stop" style="display:none;"><img src="'+loadSource+'prev.gif" id="il_prev"><img src="'+loadSource+'next.gif" id="il_next"><img src="'+loadSource+'close.gif" id="il_close"><div style="position:absolute;height:30px;width:0px;border-right:1px solid #353535;border-left:1px solid #252525;top:10px;left:85px;"></div></div>');
j('#il_shadow').click(function(){iloadEnd();}); 

// Обработка углов

if(isMSIE){

var a=document.createStyleSheet();
a.addRule("v\\:roundrect","behavior: url(#default#VML); display: inline-block");
var e=parseInt(boxCorner*2-1);

j('#il_panel').prepend('<v:roundrect class="il_panCorner" fillcolor="#313131" strokeWeight:"1px" strokeColor="#313131" arcSize="10" style="left:0;top:0;"></v:roundrect><v:roundrect class="il_panCorner" fillcolor="#313131" strokeWeight:"1px" strokeColor="#313131" arcSize="10" style="right:1;top:0;"></v:roundrect><v:roundrect class="il_panCorner" fillcolor="#313131" strokeWeight:"1px" strokeColor="#313131" arcSize="10" style="left:0;bottom:0;"></v:roundrect><v:roundrect class="il_panCorner" fillcolor="#313131" strokeWeight:"1px" strokeColor="#313131" arcSize="10" style="right:1;bottom:0;"></v:roundrect>');

j('#il_topcorners').append('<div id="il_ltc" style="width:'+boxCorner+'px;height:'+boxCorner+'px;position:relative;"><v:roundrect fillcolor="#'+boxColor+'" strokeWeight:"1px" strokeColor="#'+boxColor+'" arcSize="'+boxCorner+'" style="width:'+e+'px;height:'+e+'px;position:absolute;left:0px;top:0px;"></v:roundrect></div><div id="il_rtc" style="width:'+boxCorner+'px;height:'+boxCorner+'px;position:relative;"><v:roundrect fillcolor="#'+boxColor+'" strokeWeight:"1px" strokeColor="#'+boxColor+'" arcSize="'+boxCorner+'" style="width:'+e+'px;height:'+e+'px;position:absolute;left:-'+boxCorner+'px;top:0px;"></v:roundrect></div>');

j('#il_botcorners').append('<div id="il_lbc" style="width:'+boxCorner+'px;height:'+boxCorner+'px;position:relative;"><v:roundrect fillcolor="#'+boxColor+'" strokeWeight:"1px" strokeColor="#'+boxColor+'" arcSize="'+boxCorner+'" style="width:'+e+'px;height:'+e+'px;position:absolute;left:0px;top:-'+boxCorner+'px;"></v:roundrect></div><div id="il_rbc" style="width:'+boxCorner+'px;height:'+boxCorner+'px;position:relative;"><v:roundrect fillcolor="#'+boxColor+'" strokeWeight:"1px" strokeColor="#'+boxColor+'" arcSize="'+boxCorner+'" style="width:'+e+'px;height:'+e+'px;position:absolute;left:-'+boxCorner+'px;top:-'+boxCorner+'px;"></v:roundrect></div>');

}else {
if(boxCorner>0){
j('#il_topcorners').prepend('<canvas id=il_ltc width='+boxCorner+' height='+boxCorner+'></canvas><canvas id=il_rtc width='+boxCorner+' height='+boxCorner+'></canvas>');
j('#il_botcorners').prepend('<canvas id=il_lbc width='+boxCorner+' height='+boxCorner+'></canvas><canvas id=il_rbc width='+boxCorner+' height='+boxCorner+'></canvas>');
var ltc = document.getElementById('il_ltc').getContext('2d');
var rtc = document.getElementById('il_rtc').getContext('2d');
var lbc = document.getElementById('il_lbc').getContext('2d');
var rbc = document.getElementById('il_rbc').getContext('2d');
ltc.beginPath();ltc.fillStyle = "#" + boxColor;ltc.arc(boxCorner, boxCorner, boxCorner, 0, Math.PI, true);ltc.fill();
rtc.beginPath();rtc.fillStyle = "#" + boxColor;rtc.arc(0, boxCorner, boxCorner, 0, Math.PI, true);rtc.fill();
lbc.beginPath();lbc.fillStyle = "#" + boxColor;lbc.arc(boxCorner, 0, boxCorner, 0, Math.PI*2, true);lbc.fill();
rbc.beginPath();rbc.fillStyle = "#" + boxColor;rbc.arc(0, 0, boxCorner, 0, Math.PI*2, true);rbc.fill();
}
j('#il_panel').prepend('<canvas id=il_ltp width=10 height=10 style="position:absolute;top:0;left:0;"></canvas><canvas id=il_rtp width=10 height=10 style="position:absolute;top:0;right:0;"></canvas><canvas id=il_lbp width=10 height=10 style="position:absolute;bottom:0;left:0;"></canvas><canvas id=il_rbp width=10 height=10 style="position:absolute;bottom:0;right:0;"></canvas>');
var ltp = document.getElementById('il_ltp').getContext('2d');
var rtp = document.getElementById('il_rtp').getContext('2d');
var lbp = document.getElementById('il_lbp').getContext('2d');
var rbp = document.getElementById('il_rbp').getContext('2d');
ltp.beginPath();ltp.fillStyle = "#313131";ltp.arc(10, 10, 10, 0, Math.PI, true);ltp.fill();
rtp.beginPath();rtp.fillStyle = "#313131";rtp.arc(0, 10, 10, 0, Math.PI, true);rtp.fill();
lbp.beginPath();lbp.fillStyle = "#313131";lbp.arc(10, 0, 10, 0, Math.PI*2, true);lbp.fill();
rbp.beginPath();rbp.fillStyle = "#313131";rbp.arc(0, 0, 10, 0, Math.PI*2, true);rbp.fill();
}

// Появление загружаемого вьюпорта и тени

function iloadStart(){
	variables();
	j('#il_wrapper').animate({left:offsetLeft+'px',top:offsetTop+'px'}, cwSpeed);
	if(hideFlash){j('select, embed, object').fadeOut(hfSpeed, function(){j(this).css({visibility:"hidden"});});}
	j('#il_shadow').fadeIn(fsSpeed, function(){
				j('#il_wrapper').fadeIn(fwSpeed, function(){
							j('#il_loader').fadeIn(flSpeed, function(){
										j('body').append('<img id="il_preload" style="border:0px;position:absolute;left:-9000px;top:-9000px;" src="'+src+'">');
										j('#il_preload').load(function(){
													j('#il_loader').fadeOut(flSpeed, function(){
																imageready();
																});
													});
										});
							});
				});
};

// Развертка вьюпорта

function imageready(){
	variables();
	checkSize();
	lw = j('#il_preload').attr('width');
	lh = j('#il_preload').attr('height');
	var eleft = (windowWidth-(lw+boxCorner*2))/2+leftScroll;
	var ewidth = lw+boxCorner*2;
	var etop = (windowHeight-(lh+boxCorner*2))/2+topScroll;
	var eheight = lh+boxCorner*2;
	if(lw == wrapperWidth-boxCorner*2 && lh == wrapperHeight-boxCorner*2){
		j('#il_preload').css({position:"static",display:"none"}).animate({top:"0"} ,function(){
					j('#il_preload').prependTo('#il_content').fadeIn(fiSpeed, function(){
								keys=true;
								addAbout();
								});
					});
	} else{
		if(whtogether){
			j('#il_wrapper').animate({left:eleft+"px", width:ewidth+"px", top:etop+"px", height:eheight+"px"}, tgSpeed, function(){
					j('#il_preload').prependTo('#il_content').css({position:"static",display:"none"}).fadeIn(fiSpeed, function(){
								keys=true;
								addAbout();
								});
					});
		}else{
			j('#il_wrapper').animate({left:eleft+"px", width:ewidth+"px"}, rwSpeed, function(){
					j('#il_wrapper').animate({top:etop+"px", height:eheight+"px"}, rwSpeed, function(){
							j('#il_preload').prependTo('#il_content').css({position:"static",display:"none"}).fadeIn(fiSpeed, function(){
								keys=true;
								addAbout();
								});
							});
					});
		}
	}
};

// Добавляем описание

function addAbout(){
	if(detailsShow && (name || about)){
	j('#il_content').append('<div style="display:none;padding-top:'+detailsPad+'px;font-size:'+detailsSize+'px;font-family:'+detailsFont+';" id="il_about"></div>');
	if(name){j('#il_about').append('<div style="color:#'+detailsName+';font-weight:bold;">'+name+'</div>');}
	if(about){j('#il_about').append('<div style="color:#'+detailsColor+';text-align:justify;">'+about+'</div>');}
	var e = j('#il_about').height()+detailsPad;
	j('#il_wrapper').animate({top:((windowHeight-(lh+boxCorner*2))/2+topScroll)-e/2 + "px", height:lh+boxCorner*2+e+'px'},saSpeed,function(){
				j('#il_about').fadeIn(faSpeed, function(){
							if(isMSIE){
								document.getElementById("il_wrapper").style.removeAttribute('filter');
								document.getElementById("il_about").style.removeAttribute('filter');
							}
							});
				});
	}
};

// Включаем панель управления

function iloadPanel(){
	j('#il_panel').fadeIn(fpSpeed, function(){
		imagetotal = j("[rel='iload::"+group+"']").size();
		j('#il_count').text(index+' из '+imagetotal);
		j('#il_close').css("cursor","pointer").click(function(){iloadEnd();});
		j('#il_stop').css("cursor","pointer").click(function(){
					keys=true;
					iload=false;
					j('#il_play').fadeIn(btSpeed);
					j('#il_stop').fadeOut(btSpeed);
					});
		if(index == 1){
			j('#il_prev').fadeTo(btSpeed, butOpacity)
						 .css("cursor","")
						 .unbind("click");
		} else {
			j('#il_prev').unbind("click")
						 .fadeTo(btSpeed, 1.0)
						 .css("cursor","pointer")
						 .bind("click",function(){
												
								j('#il_stop').trigger('click');
								
								if(keys){
								keys=false;
								var previndex = parseInt(index - 2);
								//**************************
								j('#il_preload').fadeOut(btSpeed, function(){
											j('#il_about').fadeOut(faSpeed);
														name=false;
														about=false;
														j('#il_preload, #il_about').remove();
														j('[rel="iload::'+group+'"]').eq(previndex).trigger('click');
											});
								//**************************
								}
								});
		}
		if(index == imagetotal){
			if(!slideClose){j('#il_stop').trigger('click');}
			j('#il_next, #il_play').fadeTo(btSpeed, butOpacity).css("cursor","").unbind("click");
		} else {
			j('#il_next').fadeTo(btSpeed, 1.0).css("cursor","pointer");
			if(slideShow){
			j('#il_play').fadeTo(btSpeed, 1.0).css("cursor","pointer");
			j('#il_play').unbind("click")
						 .click(function(){
							if(keys){
							keys=false;
							iload=true;
							slideshow();
							j('#il_play').fadeOut(btSpeed);
							j('#il_stop').fadeIn(btSpeed);
							}
							});
			}else{
			j('#il_play').fadeTo(btSpeed, butOpacity).css("cursor","").unbind("click");
			}
			j('#il_next').unbind("click")
						 .css("cursor","pointer")
						 .click( function(){
							j('#il_stop').trigger('click');
							if(keys){
							keys=false;
							nextindex = parseInt(index);
							j('#il_preload').fadeOut(btSpeed, function(){
									 j('#il_about').fadeOut(faSpeed);
									 name=false;
									 about=false;
									 j('#il_preload, #il_about').remove();
									 j('[rel="iload::'+group+'"]').eq(nextindex).trigger('click');});
							}
							});
		}
		if(isMSIE){document.getElementById("il_panel").style.removeAttribute('filter');}
	});
};

// Инициация слайдшоу

function slideshow(){
	if(index==imagetotal && slideClose && iload){iloadEnd();}
	if(iload){
		keys=false;
				    nextindex = parseInt(index);
					j('#il_preload').fadeOut(btSpeed, function(){
						     j('#il_about').fadeOut(faSpeed);
							 name=false;
							 about=false;
							 j('#il_preload, #il_about').remove();
							 j('[rel="iload::'+group+'"]').eq(nextindex).trigger('click');});
		setTimeout(arguments.callee, slideSpeed);
	}
};


});
