// 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 = 90; //прозрачность тени (от 0 до 100)
var boxColor = "ffffff"; //цвет вьюпорта
var boxCorner = 12; //размер углов и границ в пикселях (от 1 до 25)
var hideFlash = true; //скрытие flash
var keyboard = true; //управление клавиатурой
var loadSource = "/iqery/"; //путь в папку с картинками
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 = 6000; //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);
        }
};


});