/**

 * @author Alexey 'Kopleman' Dvourechensky

 * @copyright NDRA Studio (http://www.ndra.ru)

 * @version 0.2

 * @date 2010-09-08

 * @requires jQuery

 */



 

var intervalId = 0;

function loadIt(path,firstimage){

  

 

                         

 //////////////////////////////////создаем галлерею//////////////////////////////

    if($(document).find('.gallery').length == 0){ ////Проверка существования галлери,если истина,скрипт на вывод не создание не выполняется

    var backgroundWindow = $("<div>").addClass('backgroundWindow').css({    //////див с прозрачностью черного цвета

        position:"fixed",

        width:"100%",

        height:"100%",

        top:"0",

        left:"0",

        display : "none",

        zIndex : "102",    

        backgroundColor:"black",

        opacity:"0.7"

    }).appendTo("body").fadeIn("slow");

    

    winposition = $("html").attr("scrollTop");

    if (Math.max($("body").attr("scrollTop"))>winposition){winposition = $("body").attr("scrollTop");};

    

    var background = $("<div>").addClass('background').css({ ////Див-контейнер галлерий используется дя обмана прозрачности

        position:"absolute",

        top:winposition,

        left:"0",

        zIndex : "102",

        width:"100%",

        margin: "0px auto"

    }).appendTo("body");

    var gallery = $("<div>").addClass('gallery').css({

        position : "relative"

    }).appendTo(background);    

    var close = $("<div>").addClass('close').css({  ////Кнопка закрытия

        position : "relative",

        width: "100%",

        height: "56px",
        
        textAlign : "center"

    }).appendTo(gallery);

    var closeImg = $("<img src='/site/res/img/x.gif' onClick='removeIt()'>").css({
          marginTop : "20px",              
          cursor : "pointer"  

    }).appendTo(close);////
 var closeText = $("<div onClick='removeIt()'>").addClass('closeText inlineBlock').css({
                    borderBottom: "1px dotted white",
                    height: "15px",
                    marginLeft: "5px",
                    marginBottom: "1px",
                    color: "white",
                    cursor : "pointer",
                    fontSize: "12px"
                }).html("Закрыть").appendTo(close);

    /*var gallerytitle = $("<div>").addClass('galleryTitle').css({

        position : "relative",

        width:"100%",

        height:"56px",

        textAlign : "center"

    }).appendTo(gallery);*/
    
    var pictures = $("<div>").addClass('pictures').css({

        position: "relative",

        width:"100%",
        
        margin: "0px auto",

        overflow : "hidden",
        
        height : "557px"

    }).appendTo(gallery);

    /*var left = $("<div>").addClass('left').css({

        position : "absolute",

        top : "174px",

        left: "12px",

        cursor : "pointer"

    }).appendTo(gallery);

    var leftImg = $("<img src='/site/res/img/left_btn.gif'>").appendTo(left);*/



    var form = $("<div>").addClass('form').css({

        position : "relative",
       
        width : "935px",

        left: "170px"

    }).appendTo(gallery);

    var rollerBg  = $("<div>").addClass('rollerBg').css({

        overflow:"hidden",

        position:"relative",

        height:"155px"

    }).appendTo(form);

    var roller = $("<div>").addClass('roller').css({

        position:"absolute",

        whiteSpace: "nowrap"

        //left:"-500px"

    }).appendTo(rollerBg);



        $.getJSON(path, function(data) { 

             text = $("<p>").css({

             fontFamily:"Georgia,serif",

             fontSize:"30pt",

             color:"#ffffff"

             });
             var last=data.imgs.length;
             text = text.text(data.title);

             //$(text).appendTo(gallerytitle);

          $.each(data.imgs, function (i,item){

              var td = "";

              var link = "";

              var img = "";
              if(last-1==i){margin= "16px 0px 0px 0px";}else{margin= "16px 17px 0px 0px";}

              img = $("<img>").attr({src: item.small}).data("params", {imgID:i, href:item.big}).css({

                  margin : margin,

                  display : "inline",

                  cursor : "pointer"

              }).appendTo(roller);

              

         });
         //roller.find("img").last().css("margin","16px 0px 0px 0px");
         if(firstimage==undefined){firstimage=0;}
         clickImg(parseFloat(firstimage));

        });

   /* var right = $("<div>").addClass('right').css({

       position : "absolute",

        right: "12px",

        top : "174px",

        cursor : "pointer"

    }).appendTo(gallery);

    var rightImg = $("<img src='/site/res/img/right_btn.gif'>").appendTo(right);*/

    

   

       

    }

////////////////////////////////////////////////////////////////////    

    $(document).keydown(function(event) {

      if (event.which== '27') {

      $(".gallery").remove();

      $(".background").remove();

      $(".backgroundWindow").remove();

      $().unbind("mouseup.gallery");

      $().unbind("mousedown.gallery");

      }

    });

 

        

    var that = gallery; // хитрая штука :)

    var drag = false; // условие драг эн дропа 

    var inertial = false; // условие инерциальности

    var speed = 0; // скорость на которую изменяется текущая позиция роллера

    var position = 0; // текущая позиция роллера 

    var lastEvent = 0; //   последние данные mousedown и mousemove

    var timeElement = 200; // время в мс дя вычисления нужного интервала  инерцциального скролла

    var positionMass = {}; // массив позиций роллера во время драга

    var lastSelected = null; // поледнее кликнутое изображение

    var formpos;   // кординаты .form галеррии

    var prevhref; // предедущая большая картинка

    var nexthref; // следущая большая картинка

    var currhref; // теущая большая картинка

    var coords;  // координаты курсора в тек.момент

    var sideclick; // услвие тыкнута ли одна из боковых картинок

    var prev;    // предедущая картинка

    var curr = null; // текущая картинка

    var next;   // следущая картинка

    var downX;  // координаты мыши  момент mousedown
    
    var nocenter = 0;
    
    var lastP=-1;
          

    

///////////////////////////////функция берет url-адрес 3 картинок подряд по номеру средней картинки//////////////////////////////////////////////      

          function  getImg(p){
     
              selectedimage = roller.find("img").eq(p);
              
              if ($(selectedimage).prev().length == 1){

                  var previmg = $(selectedimage).prev().data("params").href;}else{var previmg = roller.find("img").eq(roller.find("img").length-1).data("params").href;}

              if ($(selectedimage).length == 1){    

                  var currimg = $(selectedimage).data("params").href;}

              if ($(selectedimage).next().length == 1){

                  var nextimg = $(selectedimage).next().data("params").href;}else{var nextimg = roller.find("img").eq(0).data("params").href; }

              return {prevhref:previmg,currhref:currimg,nexthref:nextimg};

          };

         

///////////////////////////функция генерит 3 большие картинки снизу//////////////////////////////////////

     

            function clickImg(p) {

                

                if(lastSelected == p){return;}

                        var style = 10;

                        var img = roller.find("img").eq(p);

                        targets = getImg(p);  
                        
                        if(p+1==roller.find("img").length){
                        
                        var n2 = 0;
                      
                        }else {var n2 = p+1;}
                        //var n2 = p+1;
                        if(p-1<0){n1 = roller.find("img").length-1;}else{ var n1=p-1; }
                        
                         $(".previousimg").remove();
                         $(".nextimg").remove();

                         prev = $("<div>").addClass('previousimg nav').css({
                         position: "absolute",
                         overflow : "hidden",
                         display : "none",
                         zIndex : "100",
                         cursor : "pointer"
                        
                        });
                         curr = $("<div>").addClass('currentimg').css({
                         position: "absolute",
                         width: "933px",
                         height: "553px",
                         background: "#000",
                         border: "1px solid #7C7C7C",
                         display : "none"                         
                        });
                         next = $("<div>").addClass('nextimg nav').css({
                         position: "absolute",
                         overflow : "hidden",
                         display : "none",
                         zIndex : "100",
                         cursor : "pointer"
                         
                        });

                         

                         if (targets.prevhref!=""){
                            $("<img src='/site/res/img/left-a.png'>").addClass("image").css({margin:"10px 10px 0px 0px",display: "block"}).data("params", {imgID:n1 , side:prev }).appendTo(prev);
                            $("<img src='/site/res/img/left.png'>").addClass("image").css({margin:"10px 10px 0px 0px",display: "none"}).data("params", {imgID:n1 , side:prev }).appendTo(prev);
                         }

                         if (targets.currhref!=""){     
                            $("<img src='"+targets.currhref+"'>").css({margin:"0px 0px 0px 0px",border:"none"}).data("params", {imgID:p , side:next }).appendTo(curr);}
                            
                         if (targets.nexthref!=""){
                            $("<img src='/site/res/img/right-a.png'>").addClass("image").css({margin:"10px 10px 0px 0px",display: "block"}).data("params", {imgID:n2 , side:next }).appendTo(next);
                            $("<img src='/site/res/img/right.png'>").addClass("image").css({margin:"10px 10px 0px 0px",display: "none"}).data("params", {imgID:n2 , side:next }).appendTo(next);
                         }
                            
                            
                         $(prev).hover(function (){$(this).find(".image").css("display","none").next().css("display","block");},
                                       function(){
                                         $(this).find(".image").css("display","block").next().css("display","none");});
                         $(next).hover(function (){$(this).find(".image").css("display","none").next().css("display","block");},
                                       function(){
                                         $(this).find(".image").css("display","block").next().css("display","none");});                
                            
                        
                        if(roller.find("img").length==1){
                            prev.click(function() { clickImg(0); })

                            curr.click(function() { clickImg(0); })  
                        }else{

                            prev.click(function() { clickImg(n1); })
    
                            next.click(function() { clickImg(n2); })  
                        }
                            roller.find("img").each(function(){
                                        
                                 $(this).css({border:"1px solid #7C7C7C",

                                     opacity:"1"

                                 });

                            });

                           

                           

                            $(img).css({

                                border:"1px solid #B31943",

                                opacity:"0.8"

                                //margin:"16px 17px 0px 0px"

                            });

                            

                           var picturesdiv = $(".pictures").find("div");

                           if(targets.prevhref){ 
                                prev.appendTo(pictures);
                               
                              
                            }
                            
                             if(targets.nexthref){
                                 next.appendTo(pictures);
                                   
                            }
                           
                           
                           //var bottomimg = curr.find("img").width()/2;
                                if(p>lastP && roller.find("img").length>1 ){
                                    var piccenter = $(document).width()/2 - 466.5;
                                    nocenter=1;
                                    curr.appendTo(pictures).show().css({right:-(curr.width())}).animate({"right":piccenter},"fast","swing",function(){ 
                                        picturesdiv.remove();
                                        next.css("display","block");
                                        prev.css("display","block"); 
                                        nocenter=0;});
                                }
                                if(p<lastP && roller.find("img").length>1){ 
                                    var piccenter = $(document).width()/2 - 466.5;
                                    nocenter=1;
                                    curr.appendTo(pictures).show().css({left:-(curr.width())}).animate({"left":piccenter},"fast","swing",function(){ 
                                        picturesdiv.remove();
                                        next.css("display","block");
                                        prev.css("display","block"); 
                                        nocenter=0;});
                                } 
                                if(p==lastP && roller.find("img").length>1){
                                        var piccenter = $(document).width()/2 - 466.5;
                                        curr.appendTo(pictures).show().css({left:piccenter});
                                        picturesdiv.remove();
                                        next.css("display","block");
                                        prev.css("display","block");    
                                }        
                                if(roller.find("img").length==1){
                                    var piccenter = $(document).width()/2- 466.5;
                                    curr.appendTo(pictures).show().css({"right":piccenter}); nocenter=0;
                                    next.css("display","block");
                                    prev.css("display","block");
                                }
                            lastSelected = p ;
                            lastP = p;
                            //nocenter = 1;

           

            }   



 

                                                        

//////////////////////////кнопки для скролла влево ,вправо/////////////////////

           

                /*left.bind("mousedown.gallery",function(event){

                     event.preventDefault();

                     show = true;

                     speed = 50;

                     inertial = false;

                     lastSelected = null;

                     

                });

        

                

                right.bind("mousedown.gallery",function(event){

                     event.preventDefault();

                     show = true;

                     speed = -50;

                     inertial = false;

                     lastSelected = null;

                });*/

                 

                $(document).bind("mouseup.gallery",function(event){

                

                    

                

                    event.preventDefault();

                    formpos = form.position();

                    coords = event.pageX - formpos.left; 

                    param = event.target; 

                   

                    var params  = $(event.target).data("params");

                    

                    if(Math.abs(downX-event.pageX)<20){ 

                    if(event.target.nodeName == "IMG"){ 

                             
                            nocenter = 1;
                            if($(event.target).data("params")!= undefined) {                           

                                var a = $(event.target).data("params").imgID;

                                clickImg(a);

                            }

                    }}

                    if (drag){

                        inertial = true;

                        drag = false;

                        var inertiaSpeed = 0; 

                        for (var i in positionMass){

                            var item =positionMass[i];

                            if( i>(event.timeStamp-timeElement)){

                                inertiaSpeed += item;

                                break;

                            }     

                        }     

                        if(inertiaSpeed>0){    

                        speed = (event.pageX - inertiaSpeed)*5/40;}

                        positionMass = {};

                    }else  {speed =0;}

             });

        

                

//////////////////////////////////////////////////////////////////////////////////                

      

          

///////////////////сама функция скроллера///////////////         

      function rollit () { 

                
                var divsize = 0;

                var imgcount = 0 ;

                var noroll = 0;

            

                

                formwidth = $(document).width() - 2*form.offset().left;
                width = 466.5*2;
                form.css("width",width);

                if(lastSelected!=null) { 
                    
                    var center = form.offset().left + form.width()/2;

                    var imgposition  = roller.find("img").eq(lastSelected).offset().left + $(that).find("div.roller-block").eq(lastSelected).width()/2+50;
                    
                    if(Math.abs(center - imgposition)>2)

                        speed = (center - imgposition)/7;
                        if(Math.abs(speed)<=0.36){
                            speed = 0;
                        }

                }
                
                //inx.msg(speed);
                

            
                if(prev!=null){
                    prevtop = curr.height()/2-prev.height()/2;
                    prev.css("left",curr.offset().left-2);
                    prev.css("top",prevtop);
                    //if(prev.width()<200){prev.css("left","0");}
               }
                
                if(next!=null){
                    nexttop = curr.height()/2-next.height()/2;
                    next.css("right",curr.offset().left-13);
                    next.css("top",nexttop);
                    //if(next.width()<200){next.css("right","0");}
               }

                   

                
                
             if (curr!=null && nocenter==0){

                    var piccenter = pictures.offset().left + pictures.width()/2;

                    var bottomimg = 933/2;
    
                    curr.css("left",piccenter-bottomimg);
                    

               }

                imgcount = roller.children().size();

                

                // Если картинок меньше чем ширина
                
                form.css("left",$(window).width()/2-466.5);
                if (form.width()>roller.width()){

                    position = form.width()/2 - (roller.width()/2);
                    roller.css("left",0);
                    noroll = 1 ;

                // Если картинки не помещаются

                } else {

                    

                    noroll = 0;

                    //roller.css("left",0); - ахтунг

                } 
               

                if (noroll==1) return

                rollerlastcoord = roller.width() - form.width();

               

                //////Пружинка/////

                

                if((position) > 0 && speed > 0 ) {speed = 0;position = 0;} 

                if (Math.abs(position)>rollerlastcoord && speed < 0 ) {speed = 0; position = -rollerlastcoord;} 

                

                

               if(position > 0 && !inertial){position=0;}

                if (Math.abs(position)>rollerlastcoord && !inertial){position = -rollerlastcoord;}else

                    if (Math.abs(position) > rollerlastcoord && !drag) {speed=+Math.min(40,Math.abs(rollerlastcoord+position)); }

                /////////////////

                

            

                roller.css("left",position);

                if (inertial==true){

                    speed *= 0.9;}

                

                

                position += speed;

                  

               



              

      }         

       

///////////////////////////////////////////////////

                              

           

      

/////Маус-скролл/////

      

function handle(delta) {

    if (delta < 0){

        roll = true;

        speed = -30;

        rollit();

        roll = false;

        speed = 0;

    }else{

       roll = true;

        speed = 30;

         rollit();

         roll = false;

         speed = 0; }

}





      

////////////////////

//////Драг энд дроп скролл///////  



 $(document).mousemove(function(event){

            if(!drag) return;

             event.preventDefault();

             

             positionMass[event.timeStamp] = event.pageX;

             position += event.pageX - lastEvent.pageX;

             lastEvent = event;

     

       

 });          

 form.bind("mousedown.gallery",function(event){          

       event.preventDefault();          

       drag = true;

       lastSelected = null;

       lastEvent = event;

       downX = event.pageX;

 });

 

 

/////////////////////////////////////////////////      

intervalId = setInterval(rollit,25);



   

}

function removeIt() {

    clearInterval ( intervalId );

    $(".gallery").remove();

    $(".background").remove();

    $(".backgroundWindow").remove();

    $().unbind("mouseup.gallery");

    $().unbind("mousedown.gallery");   

}



