﻿/* Copyright (c) 2007 Onlyweb Studio | http://www.onlyweb.ru/ */
/*


From Russia with love!

*/

var myList = $('div.BgPageGalery');




var newClass = function() {
	return function() {
		return this.init.apply(this, arguments);
	}
}


var Onlyweb = {};
var App = {};

var resizerData = {
};

getDocumentWidth = function() {
	var w = document.documentElement.clientWidth || document.body.clientWidth;
	if (w > 1600) {
	  w = 1600;
	}
	return w;
}

var Resizer = newClass();
Resizer.prototype = {
  init: function(p) {
    var t = this;
    t.data = p.data;
    t.minWidth = p.minWidth;
    t.maxWidth = p.maxWidth;

		t.elements = {};
		t.customFunctions = [];

		// Когда дерево прогрузится:
		$(function() {
	      for(selector in t.data) {
	        t.elements[selector] = $(selector);
  	      }
		  var f = function() {
		    var w = getDocumentWidth();
			for (var i = 0; i < t.customFunctions.length; i++) {
			  t.customFunctions[i].call(null, w);
			}
	      t.windowResize(w);
	    };
		// Исполняем функцию когда дерево готово
		f();
		// И при изменении размеров окна
	    window.onresize = f;
		});
  },

  windowResize: function(w) {
    var t = this;
    var t0 = t.minWidth - t.maxWidth;
    var t1 = t.minWidth - w;
    var t2 = w - t.maxWidth;
    for (var selector in t.data) {
      var el = t.elements[selector];
      if (el.size() != 0) {
        var props = t.data[selector];
        for (var prop in props) {
          if (prop == 'background-position') {
            var pX = props[prop][0];
            var pY = props[prop][1];
            var valX = t.eval(w, t0, t1, t2, pX[0], pX[1]);
            var valY = t.eval(w, t0, t1, t2, pY[0], pY[1]);
            el.css(prop, valX + pX[2] + ' ' + valY + pY[2]);
          } else {
            var val = t.eval(w, t0, t1, t2, props[prop][0], props[prop][1]);
            el.css(prop, val + props[prop][2]);
          }
        }
      }
    }
  },

  eval: function(w, t0, t1, t2, a, b) {
    var t = this;

    if (w <= t.minWidth) {
      x = a;
    } else if (w >= t.maxWidth) {
      x = b;
    } else {
      var x = Math.round((b*t1 + a*t2) / t0);
    }
    return x;
  },

	addCustomFunction: function(f) {
		var t = this;
		t.customFunctions.push(f);
	}

}


/*
resizer = new Resizer({
  minWidth: 990,
  maxWidth: 1500,
  data: resizerData
});
*/



/**********************************************************************/



// --- Скролинг привьюшек на странице "фото и видео" ---

Photos = newClass();
Photos.prototype = {
  init: function(obj){
    var t = this;
    t.arrowObj = $(obj);
    t.arrArrow = t.arrowObj.parents("div.Arrow")
    t.mainObj = t.arrowObj.parents(".PhotosList.PhotoListKonkrGal");
    t.list = t.mainObj.find(".AbsListPP");
    previewWidth = t.mainObj.find(".PhotoPreview").width()+6;
    t.maxOffset = (t.mainObj.find(".PhotoPreview").size() * previewWidth - t.mainObj.width()) * -1;
    t.fl = false;
    if(t.arrowObj.parents("div.Arrow").attr('class').indexOf('Left'))
    {
     t.rightArrowOver();
     t.showButton(t.mainObj.find("div.LeftGaletyPrev"),"Default");
    } else {
     t.leftArrowOver();
     t.showButton(t.mainObj.find("div.RightGaletyPrev"),"Default");
    }
  },

  move: function(val) {
	var t = this;
	t.timer = setInterval(
		function() {
          t.curOffset = t.getPropInPixels("left");
          var v = t.curOffset + val*5;
		  if ((val < 0 && v >= t.maxOffset) || (val > 0 && v <= 0)) {
             t.list.css("left", v );
             t.showButton(t.arrArrow,"Sel");
             t.fl = true;
          } else  {
             t.fl = false;
             t.stop();
          }
		},
		25
	  );
	},

    showButton: function(obj,bClass) {
      t = this;
      obj.find("img").hide();
      obj.find("img." + bClass).show();
    },

    getPropInPixels: function(prop) {
	  var t = this;
	  return Number(t.list.css(prop).replace('px', ''));
	},

    stop: function() {
		var t = this;

        if (t.fl)
         t.showButton(t.arrArrow,"Default");
        else
         t.showButton(t.arrArrow,"Null");

        if (t.timer !== undefined) {
			clearInterval(t.timer);
		}
	},

	leftArrowOver: function() {
		var t = this;
		t.move(+1);
	},

	rightArrowOver: function() {
		var t = this;
		t.move(-1);
	}
};



Museums = newClass();
Museums.prototype = {
	init: function() {
		var t = this;
		t.mozaika = $('#mozaika');
		t.posPhotos = t.mozaika.find('.PosPhoto');
	},



	move: function(prop, val) {
		var t = this;
		var maxLeft = 990 - 1632;
		t.timer = setInterval(
			function() {
				var v = t.getPropInPixels(prop) + val*10;
				if (
					(prop == 'left' && val < 0 && v >= maxLeft) ||
					(prop == 'left' && val > 0 && v <= 0) ||
					(prop == 'top' && val < 0 && v >= -380) ||
					(prop == 'top' && val > 0 && v <= 0)
				) {
					t.mozaika.css(prop, v + 'px');
				}
			},
			25
		);
	},


	getPropInPixels: function(prop) {
		var t = this;
		return Number(t.mozaika.css(prop).replace('px', ''));
	},


	stop: function() {
		var t = this;
		if (t.timer !== undefined) {
			clearInterval(t.timer);
		}
	},

	leftArrowOver: function() {
		var t = this;
		t.move('left', +1);
	},

	rightArrowOver: function() {
		var t = this;
		t.move('left', -1);
	},

	topArrowOver: function() {
		var t = this;
		t.move('top', +1);
	},

	bottomArrowOver: function() {
		var t = this;
		t.move('top', -1);
	},

	photoOver: function(id) {
		// console.log(id);
		var t = this;
		t.posPhotos.find('.ColorfulPhoto').css('display', 'none');
		t.posPhotos.find('.GreyPhoto').css('display', 'inline');
		$('#' + id).find('.ColorfulPhoto').css('display', 'inline');
		$('#' + id).find('.GreyPhoto').css('display', 'none');
	},

	photoOut: function() {
		var t = this;
		// t.posPhotos.find('ColorfulPhoto').css('display', 'none');
	}

};

$(document).ready(function(){

 $("div.Arrow").find("img").mouseover(function(){photos = new Photos(this);});
 $("div.Arrow").find("img").mouseout(function(){
 if (typeof(photos) != 'undefined'){
  photos.stop();
  delete photos;
  }
 });

pageGallery = new PageGallery();
});

PageGallery = newClass();
PageGallery.prototype = {
	init: function() {
		var t = this;

        t.stat = "xgp";
        t.oldHash = "xoldgp1";
        t.newHash = "xgp1";
        t.param = ".New";

		t.imageWidth = 1600;
		t.imageHeight = 657;

		t.w = 990;

		t.galleryNew = $('.BgPageGalery.New');
		t.countNew = t.galleryNew.find('.BgPage').size();

        t.galleryOld = $('.BgPageGalery.Old');
		t.countOld = t.galleryOld.find('.BgPage').size();

        t.count = t.countNew;

        t.offset = $("div.BgPage");

		t.rightImgFull = $('.RightImgFull');
		t.rightImgSelect = $('.RightImgSelect');
		t.rightImgNull = $('.RightImgNull');
		t.leftImgFull = $('.LeftImgFull');
		t.leftImgSelect = $('.LeftImgSelect');
		t.leftImgNull = $('.LeftImgNull');


		t.pointerNew = 0;
        t.pointerOld = 0;
        t.pointer = 0;

        $(window).resize(function(){
            var BPG = $(".BgPageGalery");

            var w = t.getDocumentWidth();
            var t0 = 900 - 1600;
            var t1 = 900 - w;
            var t2 = w - 1600;

            if (w <= 900) {
                x = 900;
            } else if (w >= 1600) {
                x = 1600;
            } else {
                var x = Math.round((1600*t1 + 900*t2) / t0);
            }

            BPG.css("left", -1 * (t.pointer *  x));
        });

        $(document).keydown(function(evnt){
          t.NavigateThrough(evnt)
        });


        t.ajax();
    },

     ajax: function(id){
      if(typeof(id) == 'undefined')
        id = '#gp1';
      id = id.replace('#', '');
      var selector = $('#'+id);

      jQuery.get('/mainpagephotos.php',{
        hash: window.location.hash
      }, function(text) {
        selector.find("div.ImgBlock").append('<img id="photo" src="'+text+'" />');
        selector.find("div.ImgBlock").find("img").load(function () {
          //selector.find("div").css("display","none");
          //selector.find("img#photo").addClass("DisplayBlock");
          //selector.find("div").hide();
          selector.find("img#photo").fadeIn(2000);
        });
      });
    },

    posClick: function() {
     var t = this;
     $(".PosCTL span").toggleClass('DisplayNone');
     $("div.BgPageGalery").toggleClass('DisplayNone');
     if(t.stat == "xgp")
     {
       t.newHash = window.location.hash;
       t.stat = "xoldgp";
       window.location.hash = t.oldHash;
       t.pointerNew = t.pointer;
       t.pointer = t.pointerOld;
       t.count = t.countOld;
       t.param = ".Old";
     } else {
       t.stat = "xgp";
       t.oldHash = window.location.hash;
       window.location.hash = t.newHash;
       t.pointerOld = t.pointer;
       t.pointer = t.pointerNew;
       t.count = t.countNew;
       t.param = ".New";
     }
     t.checkingImg(window.location.hash.replace('x', ''));
     t.updateButtons('left');
     t.updateButtons('right');
    },

    checkingImg: function(id) {
      var t = this;
      if($(id).find("img").size()<2)
       t.ajax(id);
    },

	moveRightClick: function() {
		var t = this;
        var offset = Number(t.offset.css("width").replace('px', ''));

        if (t.pointer < t.count - 1) {
			t.pointer++;
			t.updateButtons('right');
			$('.BgPageGalery' + t.param).animate({left: "-=" + offset}, 900);
            window.location.hash = t.stat+(t.pointer+1);
            t.checkingImg(window.location.hash.replace('x', ''));
		}
	},

	moveLeftClick: function() {
		var t = this;
        var offset = Number(t.offset.css("width").replace('px', ''));
        if (t.pointer > 0) {
			t.pointer--;
			t.updateButtons('left');
			$('.BgPageGalery' + t.param).animate({left: "+=" + offset}, 900);

            window.location.hash = t.stat+(t.pointer+1);
            t.checkingImg(window.location.hash.replace('x', ''));
		}
	},

    NavigateThrough: function(event) {
       var t = this;
	    if (!document.getElementById) return;

	    if (window.event) event = window.event;

    	if (event.ctrlKey)
    	{
	    	var link = null;
	    	var href = null;
	    	switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
	    	{
	    		case 0x25:
                    t.moveLeftClick();
		    		break;
    			case 0x27:
    				t.moveRightClick();
    				break;
		    }

    	}
    },

	// activeButton: 'left' или 'right'
	updateButtons: function(activeButton) {
		var t = this;

		if (t.pointer > 0) {
			t.leftImgNull.addClass('DisplayNone');
			if (activeButton == 'left') {
				//t.leftImgSelect.removeClass('DisplayNone');
			} else {
				t.leftImgFull.removeClass('DisplayNone');
			}
		} else {
			t.leftImgNull.removeClass('DisplayNone');
			t.leftImgSelect.addClass('DisplayNone');
			t.leftImgFull.addClass('DisplayNone');
		}

		if (t.pointer < t.count - 1) {
			t.rightImgNull.addClass('DisplayNone');
			if (activeButton == 'right') {
				//t.rightImgSelect.removeClass('DisplayNone');
			} else {
				t.rightImgFull.removeClass('DisplayNone');
			}
		} else {
			t.rightImgNull.removeClass('DisplayNone');
			t.rightImgSelect.addClass('DisplayNone');
			t.rightImgFull.addClass('DisplayNone');
		}

	},

	moveLeftOver: function() {
		var t = this;
		if (t.pointer > 0) {
			t.leftImgFull.addClass('DisplayNone');
			t.leftImgSelect.removeClass('DisplayNone');
		}
	},

	moveLeftOut: function() {
		var t = this;
		if (t.pointer > 0) {
			t.leftImgFull.removeClass('DisplayNone');
			t.leftImgSelect.addClass('DisplayNone');
		}
	},

	moveRightOver: function() {
		var t = this;
		if (t.pointer < t.count - 1) {
			t.rightImgFull.addClass('DisplayNone');
			t.rightImgSelect.removeClass('DisplayNone');
		}
	},

	moveRightOut: function() {
		var t = this;
		if (t.pointer < t.count - 1) {
			t.rightImgFull.removeClass('DisplayNone');
			t.rightImgSelect.addClass('DisplayNone');
		}
	},
    getDocumentWidth: function() {
        var t = this;
        var w = document.documentElement.clientWidth || document.body.clientWidth;
        if (w <= t.minWidth) {
            return t.minWidth;
        } else if (w >= t.maxWidth) {
            return t.maxWidth;
        } else {
            return w;
    }
  }
};


MuseumsChooser = newClass();
MuseumsChooser.prototype = {
	init: function() {
		var t = this;

	},

	show: function() {
		var t = this;

	}
};

//=================previe=========

PageGalleryPre = newClass();
PageGalleryPre.prototype = {
	init: function() {
		var t = this;
		t.gallery = $('.BgPageGaleryB');
		t.count = t.gallery.find('.BgPageB').size();
	
		t.rightImgFull = $('.RightImgFull');
		t.rightImgSelect = $('.RightImgSelect');
		t.rightImgNull = $('.RightImgNull');
		t.leftImgFull = $('.LeftImgFull');
		t.leftImgSelect = $('.LeftImgSelect');
		t.leftImgNull = $('.LeftImgNull');
		
		t.pointer = 0;
		resizer.addCustomFunction(function(w) {
			t.resize(w);
			
		});
		
		ajax();
		
	},



	resize: function(w) {
		var t = this;
		t.visibleImageCounts = Math.floor((w-150) / 110); // исходя из w
		//t.visibleWin= (110*t.visibleImageCounts);
		t.visibleWin= 110;
		t.countPointers = Math.ceil(t.count / t.visibleImageCounts);
		
		//$('.LLMGaleryB').width(t.visibleWin);
		$('.LLMGaleryB').width(110*t.visibleImageCounts);
		t.updateButtons();
		
	},
	
	moveRightClick: function() {
		var t = this;
		var w = getDocumentWidth();
		//if (t.pointer < t.countPointers - 1) {
		if (t.pointer < t.count - t.visibleImageCounts) {
			t.pointer++;
			t.updateButtons('right');
			$('.BgPageGaleryB').animate({left: "-=" + t.visibleWin}, 800);
			
		}
		
	},
	
	moveLeftClick: function() {
		var t = this;
		var w = getDocumentWidth();
		if (t.pointer > 0) {
			t.pointer--;
			t.updateButtons('left');
			$('.BgPageGaleryB').animate({left: "+=" + t.visibleWin}, 800);
		}
	},
	
	// activeButton: 'left' или 'right'
	updateButtons: function(activeButton) {
		var t = this;
		
		if (t.pointer > 0) {
			t.leftImgNull.addClass('DisplayNone');
			if (activeButton == 'left') {
				t.leftImgSelect.removeClass('DisplayNone');
			} else {
				t.leftImgFull.removeClass('DisplayNone');
			}
		} else {
			t.leftImgNull.removeClass('DisplayNone');
			t.leftImgSelect.addClass('DisplayNone');
			t.leftImgFull.addClass('DisplayNone');
		}
		
		//if (t.pointer < t.countPointers - 1) {
		if (t.pointer < t.count - t.visibleImageCounts) {
			t.rightImgNull.addClass('DisplayNone');
			if (activeButton == 'right') {
				t.rightImgSelect.removeClass('DisplayNone');
			} else {
				t.rightImgFull.removeClass('DisplayNone');
			}
		} else {
			t.rightImgNull.removeClass('DisplayNone');
			t.rightImgSelect.addClass('DisplayNone');
			t.rightImgFull.addClass('DisplayNone');
		}
		
	},
	
	moveLeftOver: function() {
		var t = this;
		if (t.pointer > 0) {
			t.leftImgFull.addClass('DisplayNone');
			t.leftImgSelect.removeClass('DisplayNone');
		}
	},
	
	moveLeftOut: function() {
		var t = this;
		if (t.pointer > 0) {
			t.leftImgFull.removeClass('DisplayNone');
			t.leftImgSelect.addClass('DisplayNone');
		}
	},
	
	moveRightOver: function() {
		var t = this;
		//if (t.pointer < t.countPointers - 1) {
		if (t.pointer < t.count - t.visibleImageCounts) {
			t.rightImgFull.addClass('DisplayNone');
			t.rightImgSelect.removeClass('DisplayNone');
		}
	
	},
	
	moveRightOut: function() {
		var t = this;
		//if (t.pointer < t.countPointers - 1) {
		if (t.pointer < t.count - t.visibleImageCounts) {
			t.rightImgFull.removeClass('DisplayNone');
			t.rightImgSelect.addClass('DisplayNone');
		}	
	}
};