//Скроллер плагин
var Scroller = new Class({

	Implements: [Events, Options],

	options: {
		area: 110,
		velocity: 1,
		onChange: function(x, y){
		  
			this.element.scrollTo(x, y);
		},
		fps: 50,
		horizontal: false, //v3 modified
		vertical: true
	},

	initialize: function(element, options){
		this.setOptions(options);
		this.element = document.id(element);		
		this.listener = ($type(this.element) != 'element') ? document.id(this.element.getDocument().body) : this.element;
		this.timer = null;
		this.bound = {
			attach: this.attach.bind(this),
			detach: this.detach.bind(this),
			getCoords: this.getCoords.bind(this)
		};
	},

	start: function(){
	 
		this.listener.addEvents({
			mouseenter: this.bound.attach, //v3 modified
			mouseleave: this.bound.detach
		});
	},

	stop: function(){
		this.listener.removeEvents({
			mouseenter: this.bound.attach,
			mouseleave: this.bound.detach
		});
		this.detach();
		this.timer = $clear(this.timer);
	},

	attach: function(){
		this.listener.addEvent('mousemove', this.bound.getCoords);
	},

	detach: function(e){
		var node = this;
		this.detachTimer = (function() {
			node.listener.removeEvent('mousemove', node.bound.getCoords);
			node.timer = $clear(node.timer);
		}).delay(50);
		
	},

	getCoords: function(event){	
		this.page = (this.listener.get('tag') == 'body') ? event.client : event.page;
		if (!this.timer) this.timer = this.scroll.periodical(Math.round(1000 / this.options.fps), this);
				
	},

	scroll: function(){
		
		var size = this.element.getSize(),
			scroll = this.element.getScroll(),
			pos = this.element.getOffsets(),
			scrollSize = this.element.getScrollSize(),
			change = {x: 0, y: 0};
		
		// v3 modified
		if (!this.options.horizontal) delete this.page.x;
		if (!this.options.vertical) delete this.page.y;

		for (var z in this.page){	
		
			if (this.page[z] < (this.options.area + pos[z]) ) {			
				change[z] = (this.page[z] - this.options.area - pos[z]) * this.options.velocity;				
			}
			else if (this.page[z] + this.options.area > (size[z] + pos[z]) ) {			
				change[z] = (this.page[z] - size[z] + this.options.area - pos[z]) * this.options.velocity;
			}
		}
		
		
		
		//if ($chk($('slide'))) {
	
		     var node =this;
		    
		      if (scroll.y==110)  {
		      		$$('.ar-bot').setStyle('visibility','hidden');
		      	
			  }
			  else {
			       $$('.ar-bot').setStyle('visibility','visible');
		      		
			  };
			  if (scroll.y==0)  {
		      		$$('.ar-top').setStyle('visibility','hidden');
		      	
			  } 
			  else {
			      $$('.ar-top').setStyle('visibility','visible');
		      		
			  }
			 
	//	}
		
		if (change.y || change.x) {		   
			this.fireEvent('change', [scroll.x + change.x, scroll.y + change.y]);			
		} 
	}

});

function  getPageSize(){
       var xScroll, yScroll;

       if (window.innerHeight && window.scrollMaxY) {
               xScroll = document.body.scrollWidth;
               yScroll = window.innerHeight + window.scrollMaxY;
       } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
               xScroll = document.body.scrollWidth;
               yScroll = document.body.scrollHeight;
       } else if (document.documentElement && document.documentElement.scrollHeight > document.documentElement.offsetHeight){ // Explorer 6 strict mode
               xScroll = document.documentElement.scrollWidth;
               yScroll = document.documentElement.scrollHeight;
       } else { // Explorer Mac...would also work in Mozilla and Safari
               xScroll = document.body.offsetWidth;
               yScroll = document.body.offsetHeight;
       }

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

       // for small pages with total height less then height of the viewport
       if(yScroll < windowHeight){
               pageHeight = windowHeight;
       } else {
               pageHeight = yScroll;
       }

       // for small pages with total width less then width of the viewport
       if(xScroll < windowWidth){
               pageWidth = windowWidth;
       } else {
               pageWidth = xScroll;
       }

       return [pageWidth,pageHeight,windowWidth,windowHeight];
}

///////////////////////////////////////////
//Плагин ротации объявлений и новостей
var Rotator = new Class({
    	Implements: [Events, Options],
    	options: {      		
        cur: 0,          
        timeout: 3000
    	},
    
     initialize: function(list, options,events){
        		this.setOptions(options);
        	 	this.list=list;
        		 this.length=list.length;	
        		 this.list[0].setStyle('opacity', 1);
			 	 this.f.delay(this.options.timeout, this);   	
  	},
  	start: function() {
              this.active=true;

    },
    stop: function() {
              this.active=false;
    },
    setpos: function(pos) {
            this.options.cur = pos;
            this.slide();            
    },
   getpos: function(pos) {             
           return   this.options.cur;            
    },
    f: function() {
        if (this.active) {
            this.options.cur++;
    	      this.slide();	
        }           
	      this.f.delay(this.options.timeout, this);
               
    },
     //События
  
    slide: function() {         
        	for(i=0;i<this.length;i++) {
			    //this.list[i].tween('opacity', 0);
			    this.list[i].setStyle('opacity', 0);
		    	}  			         
	        if (this.options.cur >=this.length  ) this.options.cur = 0;
	        if (this.options.cur < 0) this.options.cur = this.length-1;	        
	        //this.list[this.options.cur].tween('opacity', 1);
	        this.list[this.options.cur].setStyle('opacity', 1).set('tween', {duration: 200});
          this.public.slideAfter();         
    },
    
 public: { slideAfter: function() { 
    
    }   
  } 

})

Shadowbox.init({
	language: 'ru',
	adapter: 'mootools',
	skipSetup: true,
	players:  ['img']
});

document.addEvent('click', function(e) {

 
      	var node =  $('js-on-line-frame');
       
  //myDiv = document.getElementById('js-on-line');
  if (e.target.id != 'js-on-line' && $(e.target).getParent('#js-on-line-frame')==null && node.getStyle('visibility')=='visible'  )  {
  	  
    	node.morph({				
				opacity: 0
		});	
  }
  if ($chk($('js-winfiltr'))) {
  var node1 = $('js-winfiltr'); 	
  if ($(e.target.getParent('#js-winfiltr'))==null && node1.getStyle('visibility')=='visible'  )  {
  	   
	    node1.morph({				
					opacity: 0
		});	
    
  }
  }
});
/*
   $$('#js-filtr').addEvent('click', function(e) {
     	      if ($$('.js-winfiltr').getStyle('visibility')=='hidden') { 
	     	       $$('.js-winfiltr').morph({
							    'opacity': 1						
			      		});
				}
				else   {
					 $$('.js-winfiltr').morph({
							    'opacity': 0						
			      		});
				}
		    e.preventDefault();     

  });       */
window.addEvent('domready', function() {
  
window.onresize=function(){
	shadowbug();
	
	
}   
  
  new DatePicker('.calendar', {
			pickerClass: 'datepicker_vista',
			toggleElements: '.calendar-img',
			timePicker: false,
			allowEmpty: true,
			format: 'd.m.Y',
			inputOutputFormat: 'd.m.Y',
			animationDuration: 200,
			months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
			days: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пн', 'Сб']
		});
//отбор по курсам валют
if ($chk($$('.js-chart-cur'))) {
		$$('.js-chart-cur').addEvent('click', function(event) {
		
		
		      var startDate = $('startDate').get('value');
		      var endDate = $('endDate').get('value');
		     // $('load').set('html','<img src="/chart/currency/?startDate='+startDate+'&endDate='+endDate+'"/>');
		      new Request({
				method: 'post',
				url: '/currency/?startDate='+startDate+'&endDate='+endDate,
				'link': 'ignore',
				data: {					
					ajax: '1'
				},
				onSuccess: function(response) {
				    //  alert(response);
				      $('load').set('html',response);
				       shadowbug();
			  }
			  }).send();
		})
}
//Выпадалка для главного меню
//менюшка 
if ($chk('#js-mainMenu')) {
		$$('#js-mainMenu li').addEvent('mouseenter', function(event) {		
					event.preventDefault(); 
					if (this.getElement('span')) 	this.getElement('span').addClass('bug_hover');
					if ($chk($(this).getElement('ul'))) {		
					$(this).getElement('ul').morph({
						'height': $(this).getElement('ul').verticalSize,
						'opacity': 1
					}); 
					}				
     }).addEvent('mouseleave', function(event) {		
				event.preventDefault();
					if ($chk($(this).getElement('ul'))) {			
        		$(this).getElement('ul').morph({
					'height': 0,
					'opacity': 0
				});	
				} 
				if (this.getElement('span')) this.getElement('span').removeClass('bug_hover');     
				
     });
}
//Выпадалка on-line консультанты
 if ($chk('#js-on-line')) {
		$$('#js-on-line').addEvent('click', function(event) {
				var node =  $('js-on-line-frame');
				var stylenode =  node.getStyle('visibility');
				
			if (stylenode=='hidden') {
				 node.morph({				
					opacity: 1
				});	
			} 
				else {
				    node.morph({				
					opacity: 0
					});	
				}  
					event.preventDefault(); 		
								
     })
}



if ($chk($('impbanner'))) {
//Ротатор объявлений
	  var   bannerlist = 	$$('#impbanner > div ').setStyle('opacity', 0).set('tween', {duration: 200});
		  bannerlist.Rotator = new Rotator( bannerlist, {} );
		  bannerlist.Rotator.public.slideAfter = function () {
	         var pos = bannerlist.Rotator.getpos();
	           
	           $$('.slide1').each(function(item) {	           
	             item.morph({
							    'margin-left': 12						
			      		});
			      			item.removeClass('move');
			      	});
			    
	         $('plashka'+pos).addClass('move');
	         $('plashka'+pos).set('morph', {duration: 900});
	         $('plashka'+pos).morph({
							    'margin-left': 0						
			      		});
	         var slider = $('slide');
	         var curCroll  =slider. getScroll();
	        
	          y=curCroll.y;
	          if  (pos>1 || pos==1) {
			  	y=curCroll.y+35;
			  	 $$('.ar-top').setStyle('visibility','visible');
			  } 
			
			  
			     
			  
			  if  (curCroll.y==110) {
			      
			      $$('.ar-bot').setStyle('visibility','hidden');
			  }
			  else {
			       $$('.ar-bot').setStyle('visibility','visible');
			  }
			    if  (pos==0) {
			  
			      y=0;
			      $$('.ar-top').setStyle('visibility','hidden');
			       $$('.ar-bot').setStyle('visibility','visible');
			  }
			  
	         slider.scrollTo(0,y);
	    };
			bannerlist.Rotator.start();
}
//Ротатор
if ($chk($('impinfo'))) {
  	var  newslist = $$('#impinfo > div ').setStyle('opacity', 0).set('tween', {duration: 200});
  	var maxheight = $('impinfo').getStyle('height').toInt();
	if (newslist.length>0) {
		newslist.Rotator = new Rotator(newslist, {timeout: 5000});	 
		newslist.Rotator.start();
		
		//также для него скорректируем высоту блока
	     var i=0;
		$$('#impinfo div').each(function(item) { 
			 var height = item.getStyle('height').toInt();
			 if (height>maxheight) maxheight = height;
			 i=i+1;
			 if (i=newslist.length) {
			 			maxheight = maxheight + 50;    
						var node = $('js-newsrotator');
					//	$('js-newsrotator').setStyle('height',height1+'px'); 
			  	 	//	$('js-b-box-center').getElement('.text').setStyle('height',height1-125); 
						
					   maxheight = maxheight - 22;
						node.setStyle('height',maxheight+'px');			
						$('impinfo').setStyle('height',maxheight-22); 
						 
						$('js-subscription').setStyle('margin-top',(maxheight-40)+'px');
			 } 
		}); 
	}
	

	
//	$('impinfo').setStyle('height',(maxheight)+'px');
	
}
	  //Удаляем баг с тенями и всякой фигней
    function shadowbug(){
    
         if ($chk($('js-b-box-center'))) {    
  			 var height = $('js-b-box-center').getStyle('height').toInt();
		  	 var height1 = 0;		  	 
		  	 if ($chk($('js-b-box-sub-menu'))) {
		  	      height1 = height1+$('js-b-box-sub-menu').getStyle('height').toInt(); 
			  }
		  	  if ($chk($('js-newsrotator'))) {
		  	      height1 = height1+$('js-newsrotator').getStyle('height').toInt();		  	      
			  }
			  if ($chk($('js-b-box-center'))) {
		  	      var height2 = $('js-b-box-center').getStyle('height').toInt();		  	      
			  }
			  if ((height1-height2)>0) {
			  	  height1 = height+(height1-height2)+10;
							      
			  }
			
			  if (height1>height && height1>height2)     {
			     var k =  $('js-b-box-center').getStyle('height').toInt()-$('js-b-box-center').getElement('.text').getStyle('height').toInt();
			    
			  			   
			  	 $('js-b-box-center').getElement('.text').setStyle('height',height1-k);  
			  }
		 } 
     if ($chk($$('.b-box-sub-menu'))) {
    
		 $$('.b-box-sub-menu').each(function(item) {
		   if (!item.hasClass('b-box-sub-menu-hotel')) {        	  
			 var height=item.getElement('.box-mid').getStyle('height').toInt()-107;	
			 
			 if ($chk(item.getElement('.sh-right'))) item.getElement('.sh-right').setStyle('height',height+'px');			  	
			 if ($chk(item.getElement('.box-right'))) item.getElement('.box-right').setStyle('height',height+'px');
       } 			           
		  });
			} 
		  $$('.b-box').each(function(item) {		  	        	  
			var  height=item.getElement('.box-mid').getStyle('height').toInt()-107;
				 if (item.hasClass('js-box4')) {  
				 	height=item.getElement('.box-mid').getStyle('height').toInt()-92;
				 
				 }			 
				 item.getElement('.sh-left').setStyle('height',height+'px');	
				 item.getElement('.sh-right').setStyle('height',height+'px');
				 item.getElement('.box-left').setStyle('height',height+'px');	
				 item.getElement('.box-right').setStyle('height',height+'px');
									           
		  }); 
		   
		 
		  
		  if ($chk($('js-bug-bread'))) { 
		 	height = $('c_breadcrumbs').getStyle('height').toInt()+34;
		 	
		 	 $('js-bug-bread').setStyle('height',height+'px');
		 }  
  };
 
//Если мышка находится в области новостей, то останавливаем ротатор, либо же запускаем

	 	$$('.js-newsrotator').addEvent('mouseenter', function(e) {      	    	
				 newslist.Rotator.stop();    

		}).addEvent('mouseleave', function(e) {
		       newslist.Rotator.start();	
    }); 		
 
  
 //При наведении на плашку спец. меняем его положение
     	$$('.slide li').addEvent('mouseenter', function(e) {
     	
		         	this.set('morph', {duration: 150});
              this.morph({
					       	'margin-left': 0						
			  });  

		}).addEvent('mouseleave', function(e) {
		       if(!this.hasClass('move')) {
		        	this.set('morph', {duration: 150});
                    this.morph({
						    'margin-left': 12						
		      		});
             }  
		        	

		}).addEvent('click', function(e) {
		   var pos = this.get('rel').toInt(); 
		     	
		    bannerlist.Rotator.setpos(pos);
		   
         
        
		});
	//Если мышка находится в области объявлений, то останавливаем ротатор, либо же запускаем

	 	$$('.b-centerban').addEvent('mouseenter', function(e) {
     	    	bannerlist.Rotator.stop();
		         

		}).addEvent('mouseleave', function(e) {
		       	bannerlist.Rotator.start(); 	
    });
	
	

	
	 
	// включаем shadowbox
  var Shadowbox_options = {
    resizeDuration: 0.2,
    fadeDuration: 0.2,
    viewportPadding: 10,
    handleOversize: 'drag',
    overlayOpacity: 0.5,
    viewportPadding: 5,
    autoDimensions: true,
	animate: false
  };

	list = $$(document.links);
  list = list.filter(function(item){
  	//if (item.hasClass('no')) return false;
    return item.href.test(/\.(jpe?g|png|gif|swf)$/)
  });
  if (list && list.length) {
		Shadowbox.setup(list, Shadowbox_options);
  }

  new SmoothScroll({
  	onStart: function() {
  		if (this.oldanchor) {
  			this.oldanchor.removeClass('anchored');
  		}
  		this.oldanchor = $(this.anchor).addClass('anchored');
  	}
  });
 
 shadowbug();

   
   
 //Выпадалка для турагентств
  $$('#js-fortur-but').addEvent('click', function(e) {
     	      if ($$('#js-fortur').getStyle('visibility')=='hidden') { 
     	     
	     	       $$('#js-fortur').morph({
							    'opacity': 1						
			      		});
			      	var height = document.documentElement.clientHeight;
			      	var sizes = getPageSize();
			      	   
			      		$('overlay').setStyle('height',sizes[1]+'px');
			         	$('js-fortur').setStyle('z-index','9999');
			         	$('js-fortur').setStyle('left',(this.getOffsets().x-10)+'px');
			      	    $('overlay').setStyle('display','block');
			      
			      
				}
				else   {
					 $$('#js-fortur').morph({
							    'opacity': 0						
			      		});
			      			$('overlay').setStyle('display','none');
				}
		         

  });
  $$('#js-fortur-close').addEvent('click', function(e) {
     	      
					 $$('#js-fortur').morph({
							    'opacity': 0						
			      	});
			      		$('overlay').setStyle('display','none');
				
		         

  });
 
   
 
 //Врубаем скроллер спец
 
	$$('.slide').each(function(item) {
		var area = 110;
			
		item.myScroller = new Scroller(item, {
				area: area,
				velocity: 0.05,
				horizontal: false, 
				vertical: true
				
		});

		item.myScroller.start();
	});
	$$('.arrow').addEvent('click', function(e) {
      	e.preventDefault();
      })
	$$('.arrow').addEvent('mousedown', function(e) {
		var  deltay=0;
		var node =$('slide');
		
	         if (this.hasClass('ar-top')) deltay = -6;
		     if (this.hasClass('ar-bot')) deltay = 6;
		      if (node.getScroll().y==110)  {
		      		$$('.ar-bot').setStyle('visibility','hidden');
		      		return false;
			  }
			  else {
			       $$('.ar-bot').setStyle('visibility','visible');
		      		
			  }
			  if (node.getScroll().y==0)  {
		      		$$('.ar-top').setStyle('visibility','hidden');
		      		return false;
			  }
			  else {
			       $$('.ar-top').setStyle('visibility','visible');
		      		
			  }
	         
		this.timer = (function() {
			var curCroll = node.getScroll();
					
	      node.scrollTo(0,curCroll.y+deltay);
		   
		}).periodical(20);		
       	e.preventDefault(); 
	}).addEvent('mouseup', function(e) {
			
		this.timer = $clear(this.timer);
		
		e.preventDefault();
	});
	
	
	
  //Врубаем скроллер в подробном описании отеля
    
	$$('.hotelgallery').each(function(item) {
		var area = 250;
			
		item.myScroller = new Scroller(item, {
				area: area,
				velocity: 0.05,
				horizontal: true, 
				vertical: false
				
		});
		
		item.myScroller.start();
	});
	var totalwidth = 0;
	$$('.hotelgallery .item').each(function(item) {
      totalwidth = totalwidth+item.getStyle('width').toInt()+20; 
  
  } );
	
	$$('.hotelgallery').getElement('.hidden').setStyle('width',totalwidth);
 //ТОП-ЛИСТ///////////////////////////////////////////////////////////////////////
 var firstpos=0; 
 //ползунок
  $$('.js-scroll-dot').addEvent('mousedown', function(e) { 
  	firstpos =  e.page.y; 
  	
	this.addClass('Dropping');
	e.preventDefault();
  }).addEvent('mousemove',  function(e) {
  			if (this.hasClass('Dropping')) {
  		          
	  			 var top=this.getStyle('top').toInt();	  			         
		         var pos =  e.page.y;
				  //Вычисляем общую высоту передвигаемого элемента
				 var node =   this.getParent().getElement('.innerscroll');
		     	 var height = node.getStyle('height').toInt();	
				 			  
				 var k = height/109-1.8; 
				 if (k<0) k=0.4;      
				 top =  top+pos-firstpos;				  
								  
				 if (top<0) top=0;
				 if (top>109) {
				 	top=109;			 	
				} 				
		     	 this.setStyle('top',top+'px');      	 
				    	
		     	node.setStyle('margin-top',-top*(k)+'px') ;
		     	firstpos =pos;
	     }
		 	
  }).addEvent('mouseup', function(e) {          
		this.removeClass('Dropping');
		e.preventDefault();
  }).addEvent('mouseleave', function(e) {          
		this.removeClass('Dropping');
		e.preventDefault();	
  });
  
 //клики по вкладкам 
 $$('.js-tab').addEvent('click', function(e) {
 			var rel = this.get('rel'); 	
   		if (!this.hasClass('active')) { 
				$('js-slider'+rel).setStyle('display','block'); 	   
				var myfx = new Fx.Slide('js-slider'+rel).hide();
				$(this).addClass('active'); 
		   		myfx.slideIn();
   		}
   		else {
		    
				var myfx = new Fx.Slide('js-slider'+rel);
				$(this).removeClass('active'); 
		   		myfx.slideOut();
		   
		   }
   		
   		
  })
  //наведение на отель и выплывает инфа об отеле
    
 //Пройдемся по отелям и выставим им нормальные позиции
 
 
 
  $$('.js-item2').addEvent('click', function(e) {
  			var rel = this.get('rel');
  			if ($chk($('js-up_win_otel'+rel))) {
					var node =  $('js-up_win_otel'+rel);
				    var height = $('js-up_win_otel'+rel).getStyle('height').toInt();
				   
				   	var tmp = this.getOffsets();
					 var posy =  tmp.y;
					  
					  node.setStyle('top',(posy-(height*2-(height-160))));
					if (node.getStyle('visibility')=='hidden')  {
		         	 	node.setStyle('opacity',1);					
						
					} else {
					    node.setStyle('opacity',0);
					    
					}
            }
  
  }).addEvent('mouseleave', function(e) {
 		var rel = this.get('rel');
 		if ($chk($('js-up_win_otel'+rel))) {
  		var node =  $('js-up_win_otel'+rel);
        node.setStyle('visibility','hidden');
        } 
			
  }) ;
  
  //наведение на инфу
   $$('.up_win_otel').addEvent('mouseenter', function(e) {  		
  		this.setStyle('opacity',1);
  
  }).addEvent('mouseleave', function(e) {          	 
            this.setStyle('opacity',0);
  }) ;
  
  //открытие закрытие фильтра каталога
   $$('#js-filtr').addEvent('click', function(e) {
     	      if ($$('.js-winfiltr').getStyle('visibility')=='hidden') { 
	     	       $$('.js-winfiltr').morph({
							    'opacity': 1						
			      		});
				}
				else   {
					 $$('.js-winfiltr').morph({
							    'opacity': 0						
			      		});
				}
		    e.preventDefault();     

  });
  //переключение вида окошек
  
  $$('#js-typewindow').addEvent('click', function(e) {  			
     	      if ($$('.js-listbox').getStyle('display')=='none') { 
	     	       $$('.js-listbox').setStyle('display','block');
	     	       $$('.js-listwindow').setStyle('display','none');
				}
				else   {
				   $$('.js-listbox').setStyle('display','none');
	     	       $$('.js-listwindow').setStyle('display','block'); 
				}
		      shadowbug();
			  e.preventDefault();   

  });
  //нажатие на Показать выбранное по отелям

  $$('.js-selectOtel').addEvent('click', function(e) {
  
  			var count=0;  			
     	      $$('.js-selOtel').each(function(item) {
			       	if (item.get('checked')==true) {
							count= count+1;   
					}
			  });
		    if (count==0) alert('Выберите хотя бы один отель!')
		    else $('search-form').submit();
         e.preventDefault();
  });
 

});





