var JComments = new Class({
    Implements: Options,
    options: {
    	eventID: ''
    },
	initialize: function(options)
		{
        	this.setOptions(options);
			var eventID = this.options.eventID
			$('addComment').addEvent('click', function(event) { 
				event.stop();
				var req = new Request.HTML({ 
				  method: 'post', 
				  url: $('addComment').get('href'),
				  data: {'do':'1', 'option':'com_coupon', 'task':'addComment', 'message':$('comment').getValue(), 'id_event':eventID}, 
				  update: $('system-message'),
				  onComplete: function(response) {
					  $("system-message").set('opacity',0);
					  $("system-message").setStyle('display','block');
					  var myFx = new Fx.Scroll($('body'), {duration: 1000, wait: false}).toTop();
							var messageFx = new Fx.Tween($("system-message"), {
							property: 'opacity',
							duration: 1000, 
							transition: Fx.Transitions.Quart.easeInOut
						});
						messageFx.start.pass([0,1], messageFx).delay(1000);
						messageFx.start.pass([1,0], messageFx).delay(3000);
						$('comment').set('value','');
				  }
				}).send(); 
			});
		}
	});

var JTimer = new Class({
    Implements: Options,
    options: {
    	dateEnd: '',
		target: 'endDate'
    },
	initialize: function(options)
		{
        	this.setOptions(options);
			var days=" дней "
    		var now = new Date();
    		var endDate = new Date(this.options.dateEnd);
    		var totalRemains = (endDate.getTime()-now.getTime());
    		if (totalRemains>1){
        		var RemainsSec=(parseInt(totalRemains/1000));
          		var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
				if (RemainsFullDays==2 || RemainsFullDays==3 || RemainsFullDays==4 || RemainsFullDays==22 || RemainsFullDays==23 || RemainsFullDays==24 || RemainsFullDays==32 || RemainsFullDays==33 || RemainsFullDays==34){
					days=" дня "
				}
        		if (RemainsFullDays==1 || RemainsFullDays==21 || RemainsFullDays==31){
            		days=" день "
        		}
        		var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
				var RemainsFullHours=(parseInt(secInLastDay/3600));
				if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
				var secInLastHour=secInLastDay-RemainsFullHours*3600;
				var RemainsMinutes=(parseInt(secInLastHour/60));
				if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
				var lastSec=secInLastHour-RemainsMinutes*60;
				if (lastSec<10){lastSec="0"+lastSec};
				if(RemainsFullDays>0){
        			$(this.options.target).innerHTML = RemainsFullDays+days+RemainsFullHours+":"+RemainsMinutes+":"+lastSec;
				} else {
					$(this.options.target).innerHTML = RemainsFullHours+":"+RemainsMinutes+":"+lastSec;
				}
				this.delayTimer = this.initialize.delay(10, this);
    		} else {
					$(this.options.target).innerHTML = "Акция закончена";}
			}
		});
var JFormTabs = new Class({
	initialize: function()
		{
			//$('adress').setStyle('display','none');
			$$('a.tabs').each(function(el) { 
				el.addEvent('click', function() {
					if(!(el.hasClass('tabA'))){
						$$('div.tab').setStyle('display','none');
						$$('a.tabA').removeClass('tabA');
						el.addClass('tabA');
						$(el.get('rel')).setStyle('display','block').fade('in');
					}
					return false;
				}); 
			});
		}
	});
	
window.addEvent('domready',function() {
	var container = $('slideshow-container');
	if(container){ 
		var showDuration = 6000; 
		var images = container.getElements('img'); 
		var currentIndex = 0;
		var count = 4;
		var interval; 
		if(images.length>1){
			images.each(function(img,i){
			if(i > 0){
				img.set('opacity',0);} 
			});
			function slideShow(i,currentIndex){
				if(i<40){
					images[currentIndex].set('opacity',(1-(i+1)/40));
					images[currentIndex = currentIndex < images.length - 1 ? currentIndex+1 : 0].set('opacity',(i+1)/40);
					slideshow = setTimeout(function() { slideShow(i+1,Index,nextIndex) }, 10);
				}
			}
			function show() {
				Index = currentIndex;
				nextIndex = currentIndex = currentIndex < images.length - 1 ? currentIndex+1 : 0;
				slideshow = setTimeout(function(){slideShow(0,Index,nextIndex)}, 10);
				interval = setTimeout(function(){show()},3000);
			}
			window.addEvent('load',function(){ 
				interval = setTimeout(function(){show()},3000);  
			});
		}
	}
});

window.addEvent('domready',function() {
	$$('a.share').each(function(a){
		var storyList = a.getParent();
        var shareHover = storyList.getElements('div.share-hover')[0];
        shareHover.set('opacity',0);
		a.addEvent('mouseenter',function() {
			shareHover.setStyle('display','block').fade('in');
        });
        shareHover.addEvent('mouseleave',function(){
        	shareHover.fade('out');
        });
        storyList.addEvent('mouseleave',function() {
        	shareHover.fade('out');
        });
    });
	$$('a.share-comment').each(function(a){
		var storyList = a.getParent();
		var shareHover = storyList.getElements('div.share-comment-hover')[0];
		shareHover.set('opacity',0);
		a.addEvent('mouseenter',function() {
			shareHover.setStyle('display','block').fade('in');
		});
		shareHover.addEvent('mouseleave',function(){
			shareHover.fade('out');
		});
		storyList.addEvent('mouseleave',function() {
			shareHover.fade('out');
		});
	});
	$$('a.share-registration').each(function(a){
		var storyList = a.getParent();
		var shareHover = storyList.getElements('div.share-registration-hover')[0];
		shareHover.set('opacity',0);
		a.addEvent('mouseenter',function() {
			shareHover.setStyle('display','block').fade('in');
		});
		shareHover.addEvent('mouseleave',function(){
			shareHover.fade('out');
		});
		storyList.addEvent('mouseleave',function() {
			shareHover.fade('out');
		});
	});
});

var elSelect = new Class({
	options: {
		container: false,
		baseClass : 'elSelect',
		onChange : null
	},
	source : false,
	selected : false,
	_select : false,
	current : false,
	selectedOption : false,
	dropDown : false,
	optionsContainer : false,
	hiddenInput : true,
	initialize: function(options){
		this.setOptions(options)
		
		if ( !this.options.container ) return
		
		this.selected = false
		this.source = $(this.options.container).getElement('select')
		this.buildFrameWork()
		
		$(this.source).getElements('option').each( this.addOption, this )
		$(this.options.container).setHTML('')
		this._select.injectInside($(this.options.container))
		
		this.bindEvents()
		
	},
	
	buildFrameWork : function() {
		this._select = new Element('div').addClass( this.options.baseClass )
		this.current = new Element('div').addClass('selected').injectInside($(this._select))
		this.selectedOption = new Element('div').addClass('selectedOption').injectInside($(this.current))
		this.dropDown = new Element('div').addClass('dropDown').injectInside($(this.current))
		new Element('div').addClass('clear').injectInside($(this._select))
		this.optionsContainer = new Element('div').addClass('optionsContainer').injectInside($(this._select))
		var t = new Element('div').addClass('optionsContainerTop').injectInside($(this.optionsContainer))
		var t = new Element('div').addClass('optionsContainerBottom').injectInside($(this.optionsContainer))

		this.hiddenInput = new Element('input').setProperties({
			type  : 'hidden',
			name  : this.source.getProperty('name'),
			id  : this.source.getProperty('name')					
		}).injectInside($(this.optionsContainer));
				
	},
	
	bindEvents : function() {
		document.addEvent('click', function() { 
				if ( this.optionsContainer.getStyle('display') == 'block') 
					this.onDropDown()
			}.bind(this));
			
		$(this.options.container).addEvent( 'click', function(e) { new Event(e).stop(); } )		
		this.current.addEvent('click', this.onDropDown.bindWithEvent(this) )
		
	},
	
	addOption: function( option ){
    	var o = new Element('div').addClass('option').setProperty('value',option.value)
		if ( option.disabled ) { o.addClass('disabled') } else {
			o.addEvents( {
				'click': this.onOptionClick.bindWithEvent(this),
				'mouseout': this.onOptionMouseout.bindWithEvent(this),
				'mouseover': this.onOptionMouseover.bindWithEvent(this)
			})
		}
		
		if ( $defined(option.getProperty('class')) && $chk(option.getProperty('class')) ) 
			o.addClass(option.getProperty('class'))

	
		if ( option.selected ) { 
			if ( this.selected) this.selected.removeClass('selected');
			this.selected = o
			o.addClass('selected')
			this.selectedOption.setText(option.text);
			this.hiddenInput.setProperty('value',option.value);
		}
		o.setText(option.text)		
		o.injectBefore($(this.optionsContainer).getLast())
	},
	
	onDropDown : function( e ) {
			
			if ( this.optionsContainer.getStyle('display') == 'block') {
				this.optionsContainer.setStyle('display','none')
			} else {
				this.optionsContainer.setStyle('display','block')
				this.selected.addClass('selected')
				var width =  this.optionsContainer.getStyle('width').toInt() > this._select.getStyle('width').toInt() ?
															this.optionsContainer.getStyle('width')
															:
															this._select.getStyle('width')
			}					
	},
	onOptionClick : function(e) {
		var event = new Event(e)
		if ( this.selected != event.target ) {
			this.selected.removeClass('selected')
			event.target.addClass('selected')
			this.selected = event.target
			this.selectedOption.setText(this.selected.getText());
			this.hiddenInput.setProperty('value',this.selected.getProperty('value'));
			if(this.options.onChange){
				$(this.options.onChange).submit();	
			}
		}
		this.onDropDown()
	},
	onOptionMouseover : function(e){
		var event = new Event(e)
		this.selected.removeClass('selected')
		event.target.addClass('selected')
	},
	onOptionMouseout : function(e){
		var event = new Event(e)
		event.target.removeClass('selected')
	}
	
});
elSelect.implement(new Events);
elSelect.implement(new Options);

var MoodalBox = new Class({
	Implements: [Options],
	options: {
		destinationOverlayOpacity: 0.7,
		allowManualClose: true
	},
	initialize: function(element, overlay, options)
	{
		this.setOptions(options);
		this.element = $(element);
		this.overlay = $(overlay);
		if (this.options.allowManualClose)
			this.overlay.addEvent("click", this.hide.bind(this));
			$$('a.close').addEvent("click", this.hide.bind(this));
		this.targetCoords = this.element.getCoordinates();
		this.fx = {
			overlayAnimation: new Fx.Tween(this.overlay, { property: "opacity" }),
			elementAnimation: new Fx.Tween(this.element, { property: "opacity" })
		}
	},
	show: function()
	{
		this.setPosition();
		this.fx.overlayAnimation.start(0, this.options.destinationOverlayOpacity);
		this.fx.elementAnimation.start(0, 1);
	},
	hide: function()
	{
		this.fx.overlayAnimation.start(this.options.destinationOverlayOpacity, 0);
		//this.fx.elementAnimation.start(1, 0);
		this.element.setStyle('visibility','hidden')
		
	},
	setPosition: function()
	{
		var size = getPageSize();
		var top = 0;
		
		if((this.targetCoords.height+200)>size[3]){
			top = window.getScrollTop()+50;
		}else{
			top = window.getScrollTop()+100;
		}
		
		this.element.setStyles({
			"top": top,
			"marginLeft": -(this.targetCoords.width / 2)
		});
	
		this.overlay.setStyles({
			"top": window.getScrollTop(),
			"height": size[1]
		});
	}
});

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){ 
    xScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
  } else if (document.documentElement && document.documentElement.scrollHeight > document.documentElement.offsetHeight){ 
    xScroll = document.documentElement.scrollWidth;
    yScroll = document.documentElement.scrollHeight;
  } else { 
    xScroll = document.body.offsetWidth;
    yScroll = document.body.offsetHeight;
  }
 
  var windowWidth, windowHeight;
  if (self.innerHeight) {
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) {
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) {
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  }
 
  if(yScroll < windowHeight){
    pageHeight = windowHeight;
  } else {
    pageHeight = yScroll;
  }
  
  if(xScroll < windowWidth){
    pageWidth = windowWidth;
  } else {
    pageWidth = xScroll;
  }

  return [pageWidth,pageHeight,windowWidth,windowHeight];
}

function initButton(reg){
		loading=0;
		var popupFx = null;
		var popupFxR = null;
		window.addEvent("domready", function() { popupFx = new MoodalBox("modalLogin", "Overlay"); });
		window.addEvent("domready", function() { popupFxR = new MoodalBox("modalRegistration", "Overlay"); });
		if(reg==1){
			popupFxR.show();
		}
		$$('a.registration').each(function(el) { 
			el.addEvent('click', function() {
				$('modalLogin').setStyle('visibility','hidden');
				popupFxR.show();
				return false;
			});
		});
		$$('a#enter').each(function(el) { 
			el.addEvent('click', function() {
				popupFx.show();
				return false;
			});
		});
		$$('a#cabinetName').each(function(el) { 
			el.addEvent('click', function() {
				if($$('#cabinetList').getStyle('height')=='0px'){
					this.addClass('actCab');
					$$('#cabinetList').tween('height', ['0px', '105px'], {duration:1000});
				}else{
					this.removeClass('actCab');
					$$('#cabinetList').tween('height', ['105px', '0px'], {duration:1000});
				}
				return false;
			});
		});
}

var JAjaxLogin = new Class({
	Implements: Options,
	options: {
    	registration: 0
    },
	initialize: function(options)
		{
			this.setOptions(options);
			$$('a#loginButton').each(function(el) { 
				el.addEvent('click', function() {
					$$('#form-login .inputbox').setStyle('border', '1px #ccc solid');
					
	
					if($('modlgn_username').value.length<1){
						$('modlgn_username').setStyle('border', '1px #f00 solid');
						return false;     
					}else if($('modlgn_passwd').value.length<1){
						$('modlgn_passwd').setStyle('border', '1px #f00 solid');
						return false;     
					}
					if(loading!=1){
						loading=1;
						$('errorBlock').setHTML('<div id="loading"></div>');
						var reqEnter = new Request.JSON({
							method: 'post', 
							url: 'index.php?option=com_user&task=ajaxLogin',
							data: {'option':'com_user', 'task':'ajaxLogin', 'username':$('modlgn_username').value, 'passwd':$('modlgn_passwd').value, 'remember':$('remember').value}, 
							onComplete: function(response) {
								if(response.error==1){
									$('errorBlock').setHTML(response.modal);
									loading=0;
								}else{
									$('loginH').setHTML(response.block);
									$('modalLogin').setHTML(response.modal);
									initButton();
								}
							}
						}).send()
					}
					return false;
				});
			});
			
			$$('a#regButton').each(function(el) { 
				el.addEvent('click', function() {
					$$('#form-reg .inputbox').setStyle('border', '1px #ccc solid');
					$('oferta').setStyle('border', '1px #ccc solid');
					var value = $('emailF').value;
					regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
					
					if(!regex.test(value)){
						$('emailF').setStyle('border', '1px #f00 solid');
						return false;     
					}else if($('passwordF').value.length<1){
						$('passwordF').setStyle('border', '1px #f00 solid');
						return false;
					}else if($('password2F').value!=$('passwordF').value){
						$('password2F').setStyle('border', '1px #f00 solid');
						return false;
					}else if(!$('oferta').checked){
						$('oferta').setStyle('border', '1px #f00 solid');
						return false;
					}else{
						var check = 1;	
					}
					 
					if(loading!=1){
						loading=1;
						$('errorBlockR').setHTML('<div id="loading"></div>');
						var reqRegistration = new Request.JSON({ 
							method: 'post', 
							url: 'index.php?option=com_coupon&task=ajaxRegistration',
							data: {'option':'com_coupon', 'task':'ajaxRegistration', 'email':$('emailF').value, 'password':$('passwordF').value, 'password2':$('password2F').value, 'name':$('nameF').value, 'family':$('familyF').value, 'oferta':check, 'city':$('city').value, 'day':$('day').value, 'month':$('month').value, 'year':$('year').value, 'friend':$('friend').value}, 
							onComplete: function(response) {
								if(response.error==1){
									$('errorBlockR').setHTML(response.modal);
									loading=0;
								}else{
									$('modalRegistration').setHTML(response.modal);
									initButton();
								}
							}
						}).send()
					}
					return false;
				});
			});
			initButton(this.options.registration);
		}
	});
	
var upDown = new Class({
	Implements: Options,
    options: {
    	price: 0
    },
	initialize: function(options){
		this.setOptions(options);
		var price = this.options.price;
		$$('a#up').each(function(el) { 
			el.addEvent('click', function() {
				var num = $('num').value;
				num++;
				$('num').set('value', num);
				$('total').setHTML(num*price);
				return false;
			}); 
		});
		$$('a#down').each(function(el) { 
			el.addEvent('click', function() {
				var num = $('num').value;
				if(num>1){
					num--;
					$('num').set('value', num);
					$('total').setHTML(num*price);
					return false;
				}
			}); 
		});	
	}		
});

var payment = new Class({
	Implements: Options,
    options: {
    	price: 0,
		id_event: 0,
		host: ''
    },
	initialize: function(options){
		this.setOptions(options);
		var id_event = this.options.id_event;
		var price = this.options.price;
		var host = this.options.host;
		var popupFx = null;
		var popupFxF = null;
		popupFx = new MoodalBox("modalWin", "Overlay");
		popupFxF = new MoodalBox("forwarding", "Overlay");
		
		$$('a.payment-link').each(function(el) { 
			el.addEvent('click', function() {
				var num = $('num').value;
				if(loading!=1){
					loading=1;
					if(el.get('rel')=='BALANCE'){
						popupFx.show();
						loading=0;
						return false;
					}else{
						popupFxF.show();
						var reqPayment = new Request({
							method: 'post', 
							url: 'index.php?option=com_coupon&task=newPayment',
							data: {'do':'1', 'option':'com_coupon', 'task':'newPayment', 'email':$('e-mail').value, 'id_event':id_event, 'count':num}, 
							onComplete: function(response) {
								$('InvId').set('value', response);
								var newPrice=price*num;
								$('OutSum').set('value', newPrice);
								$('shpnum').set('value', num);
								var id=response;
								if(id!=""){
									var reqPaymentEnd = new Request({
										method: 'post', 
										url: host,
										data: {'id':id , 'item':id_event, 'price':newPrice, 'email':$('e-mail').value, 'id_event':id_event, 'id_type':'0', 'shpnum':num}, 
										onComplete: function(response) {
											$('SignatureValue').set('value', response);
											$('IncCurrLabel').set('value', el.get('rel'));
											$('robokassa').submit();
										}
									}).send()
								}else{
									alert('Error data transfert'); 
								}
							}
						}).send();
					}
				}
			}); 
		});
	  
		$$('a#payButton').each(function(el) { 
			el.addEvent('click', function() {
				if(loading!=1){
					loading=1;
					$('modalWin').setHTML('<div id="loading"></div>');
					var newPayment = new Request.JSON({ 
						method: 'post', 
						url: 'index.php?option=com_coupon&task=newAjaxPayment',
						data: {'do':'1', 'option':'com_coupon', 'task':'newAjaxPayment', 'id_event':id_event, 'count':$('num').value}, 
						onComplete: function(response) {
							$('modalWin').setHTML(response.block);
							if(response.balance){
								$$('#cabinetBalance b').setHTML(response.balance);
							}
							var popupFx = null;
							popupFx = new MoodalBox("modalWin", "Overlay");
							loading=0; 
						}
					}).send();	
				}
			});
		}); 	
	}		
});

var JSaveForm = new Class({
	initialize: function()
		{
			$$('a#saveButton').each(function(el) { 
				el.addEvent('click', function() {
					if($('password2F').value!=$('passwordF').value){
						$('password2F').setStyle('border', '1px #f00 solid');
						return false;
					}
					$('userform').submit();
				});
			});
		}
	});
	
	
var selectCity = new Class({
	initialize: function()
		{
			window.addEvent("domready", function() {popupFxCity = new MoodalBox("modalCity", "Overlay"); });
			$$('a#sc').each(function(el) { 
				el.addEvent('click', function() {
					popupFxCity.show();
					return false;
				});
			});
		}
	});
