/*
 * Facebox (for jQuery) version: 1.2 (05/05/2008)
 * @requires jQuery v1.2 or later
 *
 * Examples at http://famspam.com/facebox/
 * Licensed under the MIT: http://www.opensource.org/licenses/mit-license.php
 * Copyright 2007, 2008 Chris Wanstrath [ chris@ozmm.org ]
 *
 * Modifed by Vladimir 'Vii' Varankin, 2009
 * Webway IT Labs | www.webway.ru
 *
 */
$.browser.msie6 = $.browser.msie && /MSIE 6\.0/i.test(window.navigator.userAgent) && !/MSIE 7\.0/i.test(window.navigator.userAgent);

(function($) {
	$.facebox = function(data, klass) {
		$.facebox.loading();

		if (data.ajax)
			fillFaceboxFromAjax(data.ajax, klass, flash);
		else if (data.image)
			fillFaceboxFromImage(data.image,klass, title,galObj,alter,print);
		else if (data.div)
			fillFaceboxFromHref(data.div,klass, title,galObj,alter,print,flash);
		else if ($.isFunction(data))
			data.call($);
		else
			$.facebox.reveal(data, klass);
	}

	/*
	 * Public, $.facebox methods
	 */

	$.extend($.facebox, {
		settings : {
			opacity : 0.8,
			overlay : true,
			gallered : false,//объект вида [[ссылка],[подсказка],[],[],[]]
			print : false,
			alt : true,
			flash: false,
			loadingImage : '',
			closeImage : '',
			imageTypes : ['png', 'jpg', 'jpeg', 'gif'],
			faceboxHtml : '\
			<div id="facebox" style="display:none;"> \
				<div class="rc rc-shape rc_popup popup"> \
					<div class="c popup-body"> \
						<div class="popup-content"></div> \
					</div> \
					<i class="t tr"></i><i class="t tl"></i><i class="b"></i> \
					<i class="b-popup-close"><i class="popup-close">Закрыть</i></i> \
				</div> \
    		</div>'
		},

		loading : function(flash) {
			init();

			if ($('#facebox .loading').length == 1) {
				return true;
			}

			showOverlay(flash);
//console.log($.facebox.settings.opacity)
			$('#facebox').css({
				visibility: 'hidden'
			});

			$('#facebox .popup-content').empty();
			$('#facebox .popup-body').children().hide();

				$('#facebox').css({
					top : getPageScroll()[1] + (getPageHeight() / 10) + 'px',
					left : '100px'
				});	
				
			if(flash){
				var flashHeight = 790;
				var mainTop = flashHeight > $(window).height() ? 0 : ($(window).height() - flashHeight)/2;
				$('#facebox').css({
					top : getPageScroll()[1]  + mainTop + 'px'
				});
			}
		

			$(document).bind('keydown.facebox', function(e) {
				if (e.keyCode == 27) {
					$.facebox.close();
				}

				return true;
			});

			$(document).trigger('loading.facebox')
		},

		reveal : function(data, klass, flash,title) {
			$(document).trigger('beforeReveal.facebox');

			if (klass) {
				$('#facebox .popup').addClass( klass );
			}
			$(window).unbind('resize');
			$('#facebox').removeClass('flashed').find('.popup-content').remove().end()
								.find('#fla').remove().end()
								.find('.popup-body').append('<div class="popup-content"></div>')
								.find('.popup-content').append( data )
								.parents('#facebox').find('.clonefacebox').attr('style','')


		if (klass == 'iframe') {
			alttt = '<div class="popup-alt"><em class="comment">' + title + '</em></div>';
			$('#facebox').find('.popup-content').append( alttt )
		}
		
		if(flash){
				if ( !(jQuery.browser.msie6)) {
					$('html').css({overflow:'hidden'})				
				}else{
					$('body').css({overflow:'hidden'})				

				}


				var flashLeft= $(window).width() > 1076 ? $(window).width() / 2 - 1076/2 : 0;
				$('#facebox_overlay').addClass('flashed')
				$('#facebox').addClass('flashed').each(function(){
						if($(this).find('.clonefacebox').size() == 0){
							$(this).wrapInner('<div class="clonefacebox"></div')
						}
				}).find('.clonefacebox').css({
						left : flashLeft,
						width: (1076 + 20) + 'px'
					})/*.find('.shadows').remove().end()*/
					.find('.popup-content').attr('id','fla').end().append('<div class="shadows"><i></i></div>')/*.find('.shadows').css({
														marginLeft:'-' + ($(window).width() / 2 - (1076 / 2) + 'px'),
														marginRight:'-' + ($(window).width() / 2 - (1076 / 2) -20 + 'px')})*/;
				
	/*			var params = {
					menu: "false",
					quality: "high",
					flashvars: "",
					wmode: "opaque"
				};
*/

				if (!swfobject.hasFlashPlayerVersion("9.0.0")){
						var str = '<div class="get_flash_player"> \
							Для просмотра анимации на Вашем компьютере должен быть установлен<br />Flash Player версии 9 или выше. \
							 <a href="http://www.adobe.com/products/flashplayer/" target="_blank">Установить</a>\
						</div>'
						$('#facebox').find('.popup-content').html( str )

				}else{
	
//				console.log(window.location.hostname);
			/*	swfobject.embedSWF(data, "fla", "1076", 790, "9.0.0", noFlashPlayerHref , false, params, false);*/
			}
				//		$(#facebox).	
						$('#facebox').height($(window).height())
						$(window).bind('resize',function(){
							flashLeft= $(window).width() > 1076 ? $(window).width() / 2 - 1076/2 : 0;
							$('#facebox').height($(window).height()).find('.clonefacebox').css({left:flashLeft});
						})
						$('#facebox_overlay').css(
						'opacity', '1')
					
						if ( !(jQuery.browser.msie)) {
						
						$('#facebox').unbind('scroll').bind('scroll',function(e){
							ee = e;
						//		$('#facebox').scrollTop(ee.target.scrollTop + 0)
						})
						}
		}

			//$('#facebox .loading').remove();
			//$('#facebox .popup-body').children().fadeIn('normal');

	//		rer = dataReplace(data)


			$('#facebox .popup-body').children().show();
//console.log($('#facebox').width());
			


			$(document).trigger('reveal.facebox').trigger('afterReveal.facebox');

		},

		close : function() {
			$(document).trigger('close.facebox');
			$('#facebox').unbind('scroll')
			return false;
		}
	})

	/*
	 * Public, $.fn methods
	 */

	$.fn.facebox = function(settings) {
		init(settings);
		function clickHandler() {
			$.facebox.loading(true);

			// support for rel="facebox.inline_popup" syntax, to add a class
			// also supports deprecated "facebox[.inline_popup]" syntax
			var klass = this.rel.match(/[face3box][facebox]\[?\.(\w+)\]?/);
			if (klass) {
				klass = klass[1];
			}
//console.log('dd');


			fillFaceboxFromHref(this.href, klass,this.title,settings.gallered,settings.alt,settings.print,settings.flash);
		//	console.log(settings.alt)
			return false;
		}

		return this.click(clickHandler);
	}

	/*
	 * Private methods
	 */

	// called one time to setup facebox on this page
	function init(settings) {
		if ($.facebox.settings.inited) {
			return true;
		} else {
			$.facebox.settings.inited = true;
		}

		$(document).trigger('init.facebox');
		makeCompatible();

		var imageTypes = $.facebox.settings.imageTypes.join('|');
		$.facebox.settings.imageTypesRegexp = new RegExp('\.' + imageTypes + '$', 'i');

		if (settings) {
			$.extend($.facebox.settings, settings);
		}

		$('body').append($.facebox.settings.faceboxHtml);

		// Vii: adding iframe to hide select-elements
		if( !$.support.boxModel ) {
			$_frame = $('<iframe id="facebox_frame" scrolling="0" border="0"></iframe>').hide();

			$('#facebox').before( $_frame );
			$_frame.css({
				'width' : $(window).width(),
				'height' : $(window).height(),
				'opacity' : 0
			});
		}

		var preload = new Image();
		//preload.src = $.facebox.settings.closeImage;
		//preload[1].src = $.facebox.settings.loadingImage

		/*$('#facebox').find('.b:first, .bl, .br, .tl, .tr').each(function() {
			preload.push(new Image())
			preload.slice(-1).src = $(this).css('background-image').replace(
					/url\((.+)\)/, '$1')
		})*/

		$('#facebox .popup-close').click($.facebox.close);
	}

	// getPageScroll() by quirksmode.com
	function getPageScroll() {
		var xScroll, yScroll;

		if(self.pageYOffset) {
			yScroll = self.pageYOffset;
			xScroll = self.pageXOffset;
		} else if(document.documentElement && document.documentElement.scrollTop) {
			// Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
			xScroll = document.documentElement.scrollLeft;
		} else if(document.body) {
			// all other Explorers
			yScroll = document.body.scrollTop;
			xScroll = document.body.scrollLeft;
		}

		//return new Array(xScroll, yScroll);
		return [xScroll, yScroll];
	}


	// Adapted from getPageSize() by quirksmode.com
	function getPageHeight() {
		var windowHeight;

		if(self.innerHeight) {
			// all except Explorer
			windowHeight = self.innerHeight;
		} else if(document.documentElement && document.documentElement.clientHeight) {
			// Explorer 6 Strict
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) {
			// other Explorers
			windowHeight = document.body.clientHeight;
		}

		return windowHeight;
	}

	// Backwards compatibility
	function makeCompatible() {
		var $s = $.facebox.settings;

		//$s.loadingImage = $s.loading_image || $s.loadingImage
		$s.closeImage = $s.close_image || $s.closeImage
		$s.imageTypes = $s.image_types || $s.imageTypes
		$s.faceboxHtml = $s.facebox_html || $s.faceboxHtml
	}

	// Figures out what you want to display and displays it
	// formats are:
	// div: #id
	// image: blah.extension
	// ajax: anything else
	function fillFaceboxFromHref(href, klass, title,galObj,alter,print,flash) {
		//console.log(href,flash)
		
		if(href.match(/#/)) {
			// div
			var url = window.location.href.split('#')[0],
			target = href.replace(url, '');

			$.facebox.reveal($(target).clone().show(), klass);
		} else if(href.match($.facebox.settings.imageTypesRegexp)) {
			// image
			fillFaceboxFromImage(href, klass, title,galObj,alter,print);
		} else {
			// ajax
			fillFaceboxFromAjax(href, klass, flash,title);
		}
	}

	function fillFaceboxFromImage(href, klass, title,galObj,alter,print,flash) {
		var image = new Image();
//console.log($.facebox.settings.alt,$.facebox.settings.gallered,this,klass,galObj)
		image.onload = function() {
			
				if(alter){
				
					/*нет title у изображения*/
					
					title = title == '' ? gallObj[0].title : title;
					
					image.altt = '<div class="popup-alt"><em class="comment">' + title + '</em></div>';
					$('.popup-close').removeClass('close2');
				}else{
					image.altt = '';
					$('.popup-close').addClass('close2');
				};
				
					
					
			$.facebox.reveal(image.altt + '<div class="pop-image"><img src="' + image.src + '" /></div>', klass);
		
		var topVal = getPageScroll()[1] + (getPageHeight() / 10);
		
		$('#facebox').css({
	         width: (image.width + 20) + 'px',
				height: (image.height +20)  + 'px',
				left : ($(window).width() / 2 - (image.width / 2) + 'px'),
				top : topVal + 'px',
				visibility : 'visible'
			}).show()
			.attr('topVal',parseInt(topVal + image.height / 2) );

		}
			
		/*pasaha*/
		
//	console.log(alt)	
		if(galObj){
		var gallObj = galObj;

if(!$('#facebox').children('div').hasClass('next_button')){
	$('#facebox').append('<div class="next_button"><div></div></div><div class="prev_button"><div></div></div>');
}
//console.log(gallObj)
			var gallLength = gallObj.length;
//alert(gallObj[0].url);
//alert(href);
//alert(href.indexOf(gallObj[0].url));
			for(ii = 0; ii < gallLength ; ii++){
				
	//		alert(href.indexOf(gallObj[ii].url))
			
				if(href.indexOf(gallObj[ii].url) != -1){
					curr = ii;
					ii = gallLength;
			
				}
			
			}

			var prevBotton = $('.prev_button div');
			var nextBotton = $('.next_button div');

			var next_obj = gallObj[curr + 1];
			var prev_obj = gallObj[curr - 1];

			checkNextPrev(curr,gallLength,prevBotton,nextBotton);
			
			prevBotton.bind('click',function(){
					chengeNextPrev(gallObj,alter,(curr - 1),gallLength,prevBotton,nextBotton)
					curr = curr - 1;
			});
			nextBotton.bind('click',function(){
					chengeNextPrev(gallObj,alter,(curr + 1),gallLength,prevBotton,nextBotton)
					curr = curr + 1;
			
			});
	
//	console.log(gallObj,(curr - 1),gallLength,prevBotton,nextBotton);
	
		}
		
		/**/
		
		
		image.src = href;
	}

	function fillFaceboxFromAjax(href, klass, flash,title) {
		// Vii: no cache for request
		var random = new Date().getTime();
		var sQuerySep;

		href.lastIndexOf('?') != -1 ? sQuerySep = '&' : sQuerySep = '?';
		href += sQuerySep + 'dynamic=' + random;
		
			$.get(href, function(data) {
	
				if(flash){		
						var flashHeight = 790;
						var pageScroll = getPageScroll()[1];
								
						$('#facebox').addClass('flashed').css({
					         width: '100%',
								height: $(window).height()  + 'px',
								left : '0',
								visibility : 'visible'
							}).show()
						
		
						$.facebox.reveal(href, klass, flash);		

				}else{
	
				re = dataReplace(href);

				myWidth=re['width']*1 || 1076;	
				myheight=re['height']*1 || 790;	
			
				$('#facebox').addClass('flashed').css({
			         width: (myWidth + 20) + 'px',
						height: (myheight +20)  + 'px',
						left : ($(window).width() / 2 - myWidth/2 + 'px'),
						top : getPageScroll()[1] + (getPageHeight() / 10) + 'px',
						visibility : 'visible'
					}).find('.popup-close').removeClass('close2')
						.end().show()
				
				}		
			
				$.facebox.reveal(data, klass, flash,title);
			})
		 
	}

	function skipOverlay() {
		return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null;
	}

	function showOverlay() {
		$('#facebox_frame').show();

		if (skipOverlay()) {
			return;
		}

		if ($('#facebox_overlay').length == 0) {
			$("body").append('<div id="facebox_overlay" class="facebox_hide"></div>');
		}

		$('#facebox_overlay').hide().addClass("facebox_overlayBG").css(
				'opacity', $.facebox.settings.opacity).click(function() {
					$(document).trigger('close.facebox')
				}).fadeIn(200,function(){
			//	$('#facebox_overlay').css(
			//	'opacity', $.facebox.settings.opacity)
				$('#facebox_overlay.flashed').css(
				'opacity', '1');				
				});


		return false;
	}

	function hideOverlay() {
		$('#facebox_frame').hide();

		if (skipOverlay()) {
			return;
		}

		$('#facebox_overlay').fadeOut(200, function() {
			/*$("#facebox_overlay").removeClass("facebox_overlayBG");
			$("#facebox_overlay").addClass("facebox_hide")
			$("#facebox_overlay").remove()*/

			$("#facebox_overlay")
				.removeClass("facebox_overlayBG")
				.addClass("facebox_hide")
				.remove();
		});

		return false;
	}

	/*
	 * Bindings
	 */

	$(document).bind('close.facebox', function() {
		$(document).unbind('keydown.facebox');

		$('#facebox').fadeOut(function() {
			$('#facebox .popup-content').removeClass().addClass('popup-content');
			hideOverlay();
				if ( !(jQuery.browser.msie6)) {
					$('html').css({overflow:'auto'})				
				}else{
					$('body').css({overflow:'auto'})				
				}
			
			//$('#facebox .loading').remove()
		})
		$('.prev_button div').unbind('click').hide();
		$('.next_button div').unbind('click').hide();


	})




/*pasaha gallery*/

			function checkNextPrev(curr,gallLength,prevBotton,nextBotton,alter){
				if (curr < 1) {prevBotton.hide()}else{ prevBotton.show()};
				if (curr > gallLength - 2) { nextBotton.hide() }else { nextBotton.show() };
			}


			function chengeNextPrev(gallObj,alter,curr,gallLength,prevBotton,nextBotton){

//	console.log(gallObj,curr,gallLength,prevBotton,nextBotton)
			
			var href = gallObj[curr].url;
			var title = gallObj[curr].title;
			
			var image = new Image();
		//	var oldImg = $('#facebox .popup-content img');
			image.onload = function() {
		
		//	var imageOut = (oldImg.width() > image.width) ? oldImg[0] : image;
			var imageOut = image;

			image.altt = alter ? '<div class="popup-alt"><em class="comment">' + title + '</em></div>' : '';

			$('#facebox .popup-content').html(image.altt + '<div class="pop-image"><img src="' + imageOut.src + '" /></div>');
		//	$.facebox.reveal('<div class="popup-alt"><em class="comment">' + title + '</em></div><div class="pop-image"><img src="' + image.src + '" /></div>', '');
		
		faceboxW = $('#facebox').width();
		faceboxH = $('#facebox').height();
	//	console.log(oldImg)
		
		var tTop = $('#facebox').attr('topVal')  - image.height / 2 ;
		var MtTop  =  tTop > 0 ? tTop : getPageHeight() / 10;
		if(tTop < 0){
			$('#facebox').attr('topVal',MtTop + image.height / 2)
		}
		
		
		$('#facebox').animate(
			{
	         width: (image.width + 20) ,
				height: (image.height +20),
				top : MtTop  + 'px',
				left : ($(window).width() / 2 - (image.width / 2))
			},
			100/*,
			function(){
					$('#facebox .popup-content img').attr('src',image.src);
			}*/
		)
		
		}
		image.src = href;
	//	console.log(image.src)
			
			
			
			
			//$('.pop-image img').at
		
			checkNextPrev(curr,gallLength,prevBotton,nextBotton);
			
			};




})(jQuery);


// Vii: Init plugin on DOM-Load
jQuery(document).ready(function(){
//	jQuery('a[rel*=facebox]').facebox()


});


