// 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://giga-files.net.ru/iload/"; //путь в папку с картинками
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('');
// Вставка в DOM
j('body').append('

');
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('');
j('#il_topcorners').append('
');
j('#il_botcorners').append('
');
}else {
if(boxCorner>0){
j('#il_topcorners').prepend('');
j('#il_botcorners').prepend('');
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('');
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('
');
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('');
if(name){j('#il_about').append(''+name+'
');}
if(about){j('#il_about').append(''+about+'
');}
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);
}
};
});