// 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); } }; });