window.addEvent('domready', function() {
	if($('id_username')) $('id_username').focus()
	
	if($('city_list'))
	{
		$('list').setStyle('overflow','hidden');
		var a=new Scroller($('list'),$('up'),$('down'));
		
	}
	
	if($('photos'))
	{
		$('photos').setStyle('overflow','hidden')
		var b=new Scroller($('photos'),$('w_gore'),$('w_dol'));
	}
	
	if($('results'))
	{
		var scrl=new Fx.Scroll(window)
		scrl.toElement('results')
	}
	
	if($$('input[type=checkbox]')) var a=new CheckBoxChanger();
	
	
	if($('photos'))
	{
		Milk=new MyMilk($('photos'));
	}
	
	if($('nod_link_switcher')){
		$('accept_rules').addEvent('submit',function(){
			var l=$('nod_link_switcher').getElement('a');
			window.open(l.get('href'),"rules"); 
			window.focus();
		})
	}
	
	
});

var Scroller=new Class({
	initialize: function(box,up,down){
		this.box=box;
		this.has_video=this.box.getElements('video') ? true : false;
		this.up_btn=up;
		this.down_btn=down;
		this.up_btn.addEvent('click',this.upClick.bind(this))
		this.down_btn.addEvent('click',this.downClick.bind(this))
		this.fx=new Fx.Scroll(this.box,{transition: Fx.Transitions.linear,duration: 200,onComplete: this.onComplete.bind(this)});	
	}
	,onComplete: function(){
		if(this.has_video){
			if(this.next > 0)
			{
				this.box.getElements('.v_holder').setStyle('display','none')
			}
			
			if(this.next == 0)
			{
				this.box.getElements('.v_holder').setStyle('display','block')
			}
		}
	}
	,upClick: function()
	{
		this.scroll('up')
	}
	,downClick: function()
	{
		this.scroll('down')
	}
	,scroll: function(direction)
	{
		curr=this.box.getScroll().y;
		this.next=direction=='up' ? curr - this.box.getSize().y : curr + this.box.getSize().y;		
		this.fx.start(curr,this.next);
	}
})

var CheckBoxChanger=new Class({
	initialize: function()
	{
		$$('input[type="checkbox"]').each(this.replace.bind(this))	
		$$('input[type="radio"]').each(this.replace.bind(this))	
	}
	,replace: function(elm)
	{
		var image=new Element('img',{
			src : elm.get('checked') ? '/site_media/img/checkbox_on.png' : '/site_media/img/checkbox_off.png'
			,'class' : elm.get('name')
		});
		
		parent=elm.getParent()
		
		if(!parent.hasClass('calendar'))
			parent.addEvent('click',this.boxClick)
		else
			image.addEvent('click',this.imgClick)
		
		image.inject(elm,'after')
		elm.setStyles({
			display: 'none'
			,'visibility' : 'hidden'
			,'float' : 'none'
			,'width' : 0
			,'height' : 0
		})
	}
	,boxClick: function(event)
	{
		event.preventDefault();
		var img=this.getChildren('img')[0]
		var input=this.getChildren('input')[0]
		var status=input.get('checked')
		
		if(input.get('type') == 'radio')
		{
			if(status) return false;			
			$$('img.'+input.get('name')).each(function(elm){elm.set('src','/site_media/img/checkbox_off.png')})	
		}	
			
		input.set('checked',status ? false : true)
		img.set('src',status ? '/site_media/img/checkbox_off.png' : '/site_media/img/checkbox_on.png')
	}
	,imgClick: function(event)
	{
		event.preventDefault();
		var input=this.getPrevious()
		var status=input.get('checked')
		
		input.set('checked',status ? false : true)
		this.set('src',status ? '/site_media/img/checkbox_off.png' : '/site_media/img/checkbox_on.png')
	}
})

var Milk;
var MilkDebug=false;
var MyMilk=new Class({
	Implements: Events
	,initialize: function(container)
	{
		this.list=container.getElements('a');
		this.list.addEvent('click',this.click.bind(this))
		this.imageLoaded=false;
		this.active=false;
		this.imgLoader=new Element('div',{
			styles : {
				position: 'fixed'
				,width: 1
				,height: 1
				,top: 0
				,left: 0
				,backgroundColor: '#000'
				,zIndex: 1
				,opacity: 0
				,overflow: 'hidden'
			}
		});
	}
	,windowKeyDown: function(event)
	{
		if(!this.active) return true;
		else event.preventDefault();
		
		switch(event.key)
		{
			case "space":
				this.nextClick();
			break;
			
			case "right":
				this.nextClick();
			break;
			
			case "left":
				this.prevClick();
			break;
			
			case "backspace":
				this.prevClick();
			break;
			
			case "esc":
				this.overlay.fireEvent('closeOverlay');
			break;
		}
	}
	,closeAction: function()
	{
		this.imageLoaded=false;
		this.active=false;
	}	
	,click: function(event)
	{
		event.preventDefault();
		this.active=true;
		var target=event.target;
		var ael=target.getParent();
		
		this.overlay=new PageOverlay(550,550,true);
		this.overlay.content_holder.setStyles({
			textAlign: 'center'
			,lineHeight: 550
			,backgroundColor: '#000'
			,'-moz-border-radius' : '20px'
			,'-webkit-border-radius': '20px'
			,'border-radius' : '20px'
			,cursor: 'pointer'
		});
		
		this.overlay.content_holder.addEvent('click',this.nextClick.bind(this))
		this.overlay.addEvent('nextClick',this.nextClick.bind(this))
		this.overlay.addEvent('prevClick',this.prevClick.bind(this))
		this.overlay.addEvent('close',this.closeAction.bind(this))
		
		window.addEvent('keydown',this.windowKeyDown.bind(this));	
				
		this.clickAction(ael);
	}
	,clickAction: function(ael)
	{
		if(!this.overlay.state)
		{
			this.overlay.addEvent('holderAnimComplete',this.imgLoad.bind(this))
			this.overlay.open();
		}
		if(this.imageLoaded) this.img.fade(0.5);
		var imgSrc=ael.get('href');	
		this.loadImage(imgSrc);
		this.determineNextPrev(ael);
	}
	,determineNextPrev: function(ael)
	{
		var idx=this.list.indexOf(ael),len=this.list.length;
		
		if(len == 1)
		{
			this.next=ael;
			this.prev=ael;
			return true;
		}
		
		if(idx == 0)
		{
			this.prev=this.list[len-1]
			this.next=this.list[1]
			return true;
		}
		
		if(idx == len-1)
		{
			this.prev=this.list[len-2]
			this.next=this.list[0]
			return true;
		}

		this.prev=this.list[idx-1]
		this.next=this.list[idx+1]
		
	}
	,loadImage: function(src)
	{
		this.img_tmp=new Element('img',{styles: {verticalAlign: 'middle',cursor: 'pointer'}});
		this.img_tmp.addEvent('load',this.imgLoad.bind(this))
		this.img_tmp.inject(this.imgLoader);
		this.img_tmp.set('src',src);		
	}
	,nextClick: function()
	{
		this.clickAction(this.next)
	}
	,prevClick: function()
	{
		this.clickAction(this.prev)
	}
	,imgLoad: function()
	{
		if(this.overlay.state)
		{
			this.img=this.img_tmp.clone();
			this.img.addEvent('click',this.nextClick.bind(this))
			this.img_tmp.destroy();
			this.overlay.content_holder.set('html','&nbsp;')
			this.img.inject(this.overlay.content_holder);
			this.imageLoaded=true;
		}
	}
});



var PageOverlay=new Class({
	Implements: Events
	,initialize: function(sizeX,sizeY,navi){
		
		this.sizeX=sizeX;
		this.sizeY=sizeY;
		this.navi=navi;
		
		this.state=false;
		
		this.blur=new Element('div',{
			styles : {
				position: 'fixed'
				,width: '100%'
				,height: '100%'
				,top: 0
				,left: 0
				,backgroundColor: '#000'
				,zIndex: 10000
				,opacity: 0
			}
		});	
		
		this.content_holder=new Element('div',{
			styles : {
				position: 'fixed'
				,width: '1'
				,height: '1'
				,top: '50%'
				,left: '50%'
				,display: 'none'
				,backgroundColor: '#fff'
				,zIndex: 10001
			}
		});
		
		this.closeButtonPostitionX=(this.sizeX/2)+10
		this.closeButtonPostitionY=-(this.sizeY/2)
		
		this.close_button=new Element('img',{
			src : '/site_media/close.png'
			,styles : {
				position: 'fixed'
				,top: '50%'
				,left: '50%'
				,marginTop: this.closeButtonPostitionY
				,marginLeft: this.closeButtonPostitionX
				,opacity: 0
				,zIndex: 10002
				,cursor: 'pointer'
			}
		});
		
		if(this.navi)
		{
			this.prev_button=new Element('div',{
			styles : {left: 50,opacity: 0}
			});	
			this.prev_button.set('html','&lt;')	
			this.prev_button.inject(document.body);
			
			this.next_button=new Element('div',{
			styles : {right: 50,opacity: 0}
			});	
			this.next_button.set('html','&gt;')	
			this.next_button.inject(document.body);
			
			this.next_button.addClass('milk_navi_button');
			this.prev_button.addClass('milk_navi_button');
				
			this.next_button.addEvent('click',this.nextClick.bind(this))
			this.prev_button.addEvent('click',this.prevClick.bind(this))
		}
		
		this.close_button.inject(document.body);
		this.content_holder.inject(document.body);
		this.content_holder.set('html','&nbsp;')
		
		this.blur.inject(document.body);
		this.blur.addEvent('click',this.blurClick.bind(this))
		this.close_button.addEvent('click',this.blurClick.bind(this))
		
		this.holder_anim=new Fx.Morph(this.content_holder,{duration : 600,transition: Fx.Transitions.Bounce.easeOut});
		this.holder_anim.addEvent('complete',this.holderAnimComplete.bind(this))

		this.blur_anim=new Fx.Tween(this.blur,{duration : 300});
		this.blur_anim.addEvent('complete',this.blurAnimComplete.bind(this))
		
		this.addEvent('closeOverlay',this.blurClick.bind(this))
		
	}
	,nextClick: function(event)
	{
		this.fireEvent('nextClick');
		return false;
	}
	,prevClick: function(event)
	{
		this.fireEvent('prevClick');
		return false;
	}
	,open: function()
	{
		this.blur_anim.start('opacity',0,0.8);
	}
	,blurClick: function()
	{
		this.blur.destroy();
		this.content_holder.destroy();
		this.close_button.destroy();
		if(this.navi)
		{
			this.next_button.destroy();
			this.prev_button.destroy();
		}
		
		this.fireEvent('close')
	}
	,resize: function(x,y)
	{
		this.holder_anim.start({
			'width' : x
			,'height' : y
			,'marginTop': -(y/2)
			,'marginLeft': -(x/2)
		});
	}
	,blurAnimComplete: function()
	{
		this.fireEvent('blurAnimComplete',this);
		this.content_holder.setStyles({display: 'block'});
		this.resize(this.sizeX,this.sizeY);
	}
	,holderAnimComplete: function()
	{		
		this.state=true;
		this.close_button.fade('in');
		this.fireEvent('holderAnimComplete',this.content_holder,this)
		if(this.navi)
		{
			this.next_button.fade('in')
			this.prev_button.fade('in')
		}
	}
});

