﻿(function($){


	/*
	*	Наложение теней 
	*/

	var dropShadowZindex = 1;

	$.fn.dropShadow = function(options)
	{
		//	Default option
		var opt = $.extend({
			left: 3,
			top: 3,
			blur: 2,
			opacity: .4,
			color: "#a49086",
			swap: false
			}, options);
		
		var jShadows = $([]);
		
		this.not(".dropShadow").each(function()
		{
			var jthis = $(this);
			var shadows = [];

			var blur = opt.blur;
			var opacity = opt.opacity / (blur * 8);
			var zOriginal = dropShadowZindex + 1;
			var zShadow = dropShadowZindex;
			
			// Create ID for shadow
			var shadowId;
			if (this.id) {
				shadowId = this.id + "_dropShadow";
			} else {
				shadowId = "ds" + (1 + Math.floor(9999 * Math.random()));
			}

			// Modify original element
			$.data(this, "shadowId", shadowId); //store id in expando
			$.data(this, "shadowOptions", options); //store options in expando
			jthis
				.attr("shadowId", shadowId)
				.css("zIndex", zOriginal);
			if (jthis.css("position") != "absolute") {
				jthis.css({
					position: "relative",
					zoom: 1 //for IE layout
				});
			}

			// Create first shadow layer
			bgColor = jthis.css("backgroundColor");
			if (bgColor == "rgba(0, 0, 0, 0)") bgColor = "transparent";  //Safari
			if (bgColor != "transparent" || jthis.css("backgroundImage") != "none" 
					|| this.nodeName == "SELECT" 
					|| this.nodeName == "INPUT"
					|| this.nodeName == "TEXTAREA") {		
				shadows[0] = $("<div></div>")
					.css("background", opt.color);								
			}
			else {
				shadows[0] = jthis
					.clone()
					.removeAttr("id")
					.removeAttr("name")
					.removeAttr("shadowId")
					.css("color", opt.color);
			}
			shadows[0]
				.addClass("dropShadow")
				.css({
					height: jthis.outerHeight(),
					left: blur,
					opacity: opacity,
					position: "absolute",
					top: blur,
					width: jthis.outerWidth(),
					zIndex: zShadow
				});
				
			// Create other shadow layers
			var layers = (8 * blur) + 1;
			for (i = 1; i < layers; i++) {
				shadows[i] = shadows[0].clone();
			}

			// Position layers
			var i = 1;			
			var j = blur;
			while (j > 0) {
				shadows[i].css({left: j * 2, top: 0});           //top
				shadows[i + 1].css({left: j * 4, top: j * 2});   //right
				shadows[i + 2].css({left: j * 2, top: j * 4});   //bottom
				shadows[i + 3].css({left: 0, top: j * 2});       //left
				shadows[i + 4].css({left: j * 3, top: j});       //top-right
				shadows[i + 5].css({left: j * 3, top: j * 3});   //bottom-right
				shadows[i + 6].css({left: j, top: j * 3});       //bottom-left
				shadows[i + 7].css({left: j, top: j});           //top-left
				i += 8;
				j--;
			}

			// Create container
			var divShadow = $("<div></div>")
				.attr("id", shadowId) 
				.addClass("dropShadow")
				.css({
					left: jthis.position().left + opt.left - blur,
					marginTop: jthis.css("marginTop"),
					marginRight: jthis.css("marginRight"),
					marginBottom: jthis.css("marginBottom"),
					marginLeft: jthis.css("marginLeft"),
					position: "absolute",
					top: jthis.position().top + opt.top - blur,
					zIndex: zShadow
				});

			// Add layers to container	
			for (i = 0; i < layers; i++) {
				divShadow.append(shadows[i]);
			}
			
			// Add container to DOM
			jthis.after(divShadow);

			// Add shadow to return set
			jShadows = jShadows.add(divShadow);

			// Re-align shadow on window resize
			$(window).resize(function()
			{
				try {
					divShadow.css({
						left: jthis.position().left + opt.left - blur,
						top: jthis.position().top + opt.top - blur
					});
				}
				catch(e){}
			});
			
			// Increment z-index counter
			dropShadowZindex += 2;

		});  //end each
		
		return this.pushStack(jShadows);
	};

	$.fn.redrawShadow = function()
	{
		// Remove existing shadows
		this.removeShadow();
		
		// Draw new shadows
		return this.each(function()
		{
			var shadowOptions = $.data(this, "shadowOptions");
			$(this).dropShadow(shadowOptions);
		});
	};

	$.fn.removeShadow = function()
	{
		return this.each(function()
		{
			var shadowId = $(this).shadowId();
			$("div#" + shadowId).remove();
		});
	};

	$.fn.shadowId = function()
	{
		return $.data(this[0], "shadowId");
	};

	$(function()  
	{
		// Suppress printing of shadows
		var noPrint = "<style type='text/css' media='print'>";
		noPrint += ".dropShadow{visibility:hidden;}</style>";
		$("head").append(noPrint);
	});



	/*
	*	Прокрутка изображений
	*/

	function changeImage(imgSrc, fullImageSrc) {
		var img = document.getElementById('mainImage');
		var img_full = document.getElementById('img_full');

		if (img && img_full) {
			img.src = imgSrc;
			img_full.href = fullImageSrc;
		}
	}

	$(function() {
		$("#viewer").imageScroller({
			next:"btn1",
			prev:"btn2",
			frame:"viewerFrame",
			visibleItems:5,
			width:52,
			child:"a"
		});
	});

	jQuery.fn.imageScroller = function(params){
		var p = params || {
			next:"buttonNext",
			prev:"buttonPrev",
			frame:"viewerFrame",
			visibleItems: 5,
			width:100,
			child:"a"
		};

		var _btnNext = $("#"+ p.next);
		var _btnPrev = $("#"+ p.prev);
		var _imgFrame = $("#"+ p.frame);
		var _firstLink = _imgFrame.find("a:first");
		var _lastLink = _imgFrame.find("a:last");
		var _width = p.width;
		var _child = p.child;
		var _itv;
		
		var turnLeft = function(){
		    //alert('left');
		    //alert(_imgFrame.find(_child+":last").attr('id') + " " + _lastLink.attr('id'));
		    if(_imgFrame.find(_child+":eq("+(p.visibleItems-1)+")").attr('id') == _lastLink.attr('id'))
		        return;
		    
		    _btnPrev.unbind("click",turnLeft);
			_imgFrame.animate( {marginLeft:-_width}, 'fast', '', function(){
				_imgFrame.find(_child+":first").appendTo( _imgFrame );
				_imgFrame.css("marginLeft",0);
				_btnPrev.bind("click",turnLeft);
				
				setButtonsClasses();
			});
			
			
		};

		var turnRight = function(){
		    //alert('right');
		    //alert(_imgFrame.find(_child+":first").attr('id') + " " + _firstLink.attr('id'));
		    if(_imgFrame.find(_child+":first").attr('id') == _firstLink.attr('id'))
		        return;
		    
		    _btnNext.unbind("click",turnRight);
			_imgFrame.find(_child+":last").clone().show().prependTo( _imgFrame );
			_imgFrame.css("marginLeft",-_width);
			_imgFrame.animate( {marginLeft:0}, 'fast' ,'', function(){
				_imgFrame.find(_child+":last").remove();
				_btnNext.bind("click",turnRight);
				
				setButtonsClasses();
			});
		};
		
		var setButtonsClasses = function(){
		    var isBeginning = _imgFrame.find(_child+":first").attr('id') == _firstLink.attr('id');
		    var isEnd = _imgFrame.find(_child+":eq("+(p.visibleItems-1)+")").attr('id') == _lastLink.attr('id');
		
		    if(isBeginning)
	            _btnNext.find('img').addClass('arrow_no_hover');
            else
                _btnNext.find('img').removeClass('arrow_no_hover');
            
            if(isEnd)
	            _btnPrev.find('img').addClass('arrow_no_hover');
            else
                _btnPrev.find('img').removeClass('arrow_no_hover');
		};

		_btnNext.css("cursor", "hand").click( turnRight );
		_btnPrev.css("cursor", "hand").click( turnLeft );
		
		setButtonsClasses();
	};



	/*
	*	Картинка на весь экран
	*/

	var tb_pathToImage = "/files/images/loadingAnimation.gif";

	$(document).ready(function(){   
		tb_init('a.thickbox, area.thickbox, input.thickbox');
		imgLoader = new Image();
		imgLoader.src = tb_pathToImage;
	});

	function tb_init(domChunk){
		$(domChunk).click(function(){
			var t = this.title || this.name || null;
			var a = this.href || this.alt;
			tb_show(t, a);
			this.blur();
			return false;
		});
	}

	function tb_show(caption, url) {
		try {
			if (typeof document.body.style.maxHeight === "undefined") {
				//	Для ИЕ:
				$("body","html").css({height: "100%", width: "100%"});
				$("html").css("overflow","hidden");
				if (document.getElementById("TB_HideSelect") === null) {
					$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
					$("#TB_overlay").click(tb_remove);
				}
			} else {
				//	Для нормальных броузеров:
				if(document.getElementById("TB_overlay") === null) {
					$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
					$("#TB_overlay").click(tb_remove);
				}
			}
			
			if(tb_detectMacXFF()) {
				$("#TB_overlay").addClass("TB_overlayMacFFBGHack");
			} else {
				$("#TB_overlay").addClass("TB_overlayBG");
			}
			
			if(caption === null) { caption = ""; }

			//	Добавим картинку с изображением хода загрузки
			$("body").append("<div id='TB_load'><img src='" + imgLoader.src + "' /></div>");
			$('#TB_load').show();

			TB_PrevCaption = "";
			TB_PrevHTML = "";
			TB_NextCaption = "";
			TB_NextHTML = "";
			TB_imageCount = "";
			TB_FoundURL = false;
			
			imgPreloader = new Image();
			imgPreloader.onload = function() {		
				imgPreloader.onload = null;
				
				var pagesize = tb_getPageSize();
				var x = pagesize[0] - 150;
				var y = pagesize[1] - 150;
				var imageWidth = imgPreloader.width;
				var imageHeight = imgPreloader.height;
				if (imageWidth > x) {
					imageHeight = imageHeight * (x / imageWidth); 
					imageWidth = x; 
					if (imageHeight > y) { 
						imageWidth = imageWidth * (y / imageHeight); 
						imageHeight = y; 
					}
				} else if (imageHeight > y) { 
					imageWidth = imageWidth * (y / imageHeight); 
					imageHeight = y; 
					if (imageWidth > x) { 
						imageHeight = imageHeight * (x / imageWidth); 
						imageWidth = x;
					}
				}
			
				TB_WIDTH = imageWidth + 30;
				TB_HEIGHT = imageHeight + 60;
				$("#TB_window").append("<a href='' id='TB_ImageOff' title='Закрыть'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Закрыть'>Закрыть</a></div>");
				$("#TB_closeWindowButton").click(tb_remove);

				document.onkeydown = function(e) { 	
					if (e == null) {
						keycode = event.keyCode;
					} else {
						keycode = e.which;
					}
					if(keycode == 27) { // Закрыть
						tb_remove();
					}
				};
			
				tb_position();
				$("#TB_load").remove();
				$("#TB_ImageOff").click(tb_remove);
				$("#TB_window").css({display:"block"});
			};
			
			imgPreloader.src = url;
		
		} catch(e) {
			//	Тут надо обработать эксепшон в стиле Кунг-Фу!
		}
	}

	function tb_showIframe(){
		$("#TB_load").remove();
		$("#TB_window").css({display:"block"});
	}

	function tb_remove() {
 		$("#TB_imageOff").unbind("click");
		$("#TB_closeWindowButton").unbind("click");
		$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
		$("#TB_load").remove();
		if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
			$("body","html").css({height: "auto", width: "auto"});
			$("html").css("overflow","");
		}
		document.onkeydown = "";
		document.onkeyup = "";
		return false;
	}

	function tb_position() {
		$("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
		if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) {
			$("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
		}
	}

	function tb_getPageSize(){
		var de = document.documentElement;
		var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
		var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
		arrayPageSize = [w, h];
		return arrayPageSize;
	}

	function tb_detectMacXFF() {
		var userAgent = navigator.userAgent.toLowerCase();
		if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox') != -1) {
			return true;
		}
	}

})(jQuery);