// JavaScript Document

var SingUpForm = {
	
	  init: function(){
			this.wrapper = $('form-singup-wrapper');
			this.title = this.wrapper.getElement('h2');
			this.button =  this.wrapper.getElement('button').getElement('span');
			this.form = $('form-singup');
			this.closeBtn = $('btn-close');
			
			this.regLink = this.wrapper.getParent('div').getElement('a[rel=reg]');
			this.loginLink = this.wrapper.getParent('div').getElement('a[rel=login]');
			// preparing wrapper
			this.wrapperFx = new Fx.Tween(this.wrapper, { property: 'opacity', duration: 200, link: 'cancel' });
			this.wrapperFx.set(0);
			this.wrapper.setStyle('display', 'block');
			
			// link events
			this.regLink.addEvent('click', function(event){
			  event.stop();
			  this.show('reg');
			}.bind(this));
			
			this.loginLink.addEvent('click', function(event){
        event.stop();
			  this.show('login');
			}.bind(this));
			
			// close event
		  this.closeBtn.addEvent('click', function(event){
			  event.stop();
				this.wrapperFx.start(0);
			}.bind(this));
			
			// event for other links
			$$('.fire-login').each(function(element){
			  element.addEvent('click', function(event){
					event.stop();
					this.show('login');
				}.bind(this));
			}, this);

		},
		
		show: function(type){
			if (type == 'reg'){
				this.title.set('text', 'Registrace');
				this.button.set('text', 'Registrovat');
				this.button.addClass('reg');
				this.form.set('action', this.regLink.get('href'));
				this.wrapperFx.start(1);
			}
			
			if (type == 'login'){
				this.title.set('text', 'Přihlášení');
				this.button.set('text', 'Přihlásit');
				this.button.removeClass('reg');
				this.form.set('action', this.loginLink.get('href'));
				this.wrapperFx.start(1);
			}
		}
};

var SendJokeForm = {
	  
		init: function(){
			 var flag = 0;
		   var slideFx = new Fx.Morph('form-send-joke-wrapper', { duration: 300, link: 'cancel' });
			 slideFx.set({
			   height: 0,
				 opacity: 0
			 });
			 
			 // toggle event
			 $('btn-send').addEvent('click', function(event){
			   event.stop();
				 if (flag) {
					 flag = 0;
					 slideFx.start({
						 height: 0,
						 opacity: 0
					 });
				 } else {
					 flag = 1;
					 slideFx.start({
						 height: 35,
						 opacity: 1
					 });
				 }
			 });
		}
};

var AVPlayer = {
	
	  init: function(){
			this.container = $('flash-container');
			this.source = sourceFile;
			this.preview = previewImage;
			this.playerPath = '/flash/player.swf';
			this.flaswars = '';
			this.params = new Array();
			this.type = this.source.substr(-3,3);
      
			// file path
			this.params.include('file='+this.source);
			
			// image preview
			if (this.type != 'mp3'){
				this.params.include('image='+this.preview);
			}
			
			// colors
			this.params.include('screencolor=000000');
			
			this.flaswars = this.params.join('&');
			
			this.options = {
				id : 'flv-player',
				container: this.container,
				params: {
					wmode: 'transparent',
					flashvars: this.flaswars
				},
				width: 480,
				height: (this.type == 'mp3' ? 21 : 371)
			}
  		// insert flash player
			if (this.source) {
  			this.player = new Swiff(this.playerPath, this.options);
			}
		}
		
};

var AddForm = {
	
	  init: function(){
      
			var categories = [
				{ id: 'form-add-select-pic',  num: 1, rel: ['form-add-title', 'form-add-picture'] },
				{ id: 'form-add-select-av',   num: 3, rel: ['form-add-title', 'form-add-picture'] },
				{ id: 'form-add-select-text', num: 2, rel: ['form-add-title', 'form-add-story'] }
			]
			
			var form = $('form-add');
			var selectBox = $('form-add-category');
			var togglers = form.getElements('.choose');
			togglers.setStyle('cursor', 'pointer');
			var items = [ 'form-add-title', 'form-add-picture', 'form-add-story' ]
			items.each(function(item, index){
				items[index] = $(item).getParent('p');
			});
			
			// destroy selectbox 
			selectBox.getParent('p').destroy();
			
			// validation event
			form.addEvent('submit', function(event){
				event.stop()
				AddForm.validate();
			});
			
			// tooglers event
			togglers.each(function(toggler){
				var id = toggler.get('id');
				var rel = new Array();
				var num = 0;
				categories.each(function(category){
				  if (category.id == id) {
						rel = category.rel;
						num = category.num;
					}
				});
        toggler.addEvent('click', function(event){
					event.stop();
					togglers.removeClass('active');
					items.each(function(item){
					  item.addClass('hide');
					});
					rel.each(function(e){
						$(e).getParent('p').removeClass('hide');
					});
					if (num == 1) { $('form-add-picture').getParent('p').getElement('label').set('text', 'Obrázek:'); }
					if (num == 3) { $('form-add-picture').getParent('p').getElement('label').set('text', 'Audio/Video:') ; }
					if (num == 2) { $('form-add-picture').value = ''; }
					this.addClass('active');
					AddForm.setCategory(num);
				});
			});
			
			// basic settings
			$('form-add-picture').getParent('p').addClass('hide');
			AddForm.setCategory(2);
			
    },
		
		setCategory: function(num){
			$('form-add-category-input').value = num;
		},
		
		validate: function(){
			
			var err = new Array();
			var form = $('form-add');
			// dodatečná registrace
			if ($('additional-information')){
				
				var fields = new Array();
				var contactFields = ['name', 'surname', 'street', 'city', 'zip', 'phone', 'username'];
				contactFields.each(function(value){
						if ($('form-reg-'+value).value == ''){
								fields.include(form.getElement('label[for=form-reg-' + value + ']').get('text').replace(':','')); 
						}
				});
				
				if (fields.length > 0){
						err.include('Je nutné vyplnit i následující položky:\n' + fields.join(', '));
				}
				
				// zip code
				if ($('form-reg-zip').value){
						var zip = $('form-reg-zip').value;
						zip = zip.replace(' ', '').replace(/[0-9]{5}/, 'valid');
						if (zip != 'valid'){
								err.include('PSČ je neplatné. Prosím, zadejte pouze čísla (5 číslic), případně mezeru.');
						}
				}
				
				// phone
				if ($('form-reg-phone').value){
						var phone = $('form-reg-phone').value;
						phone = phone.replace(/\+?([0-9 ]{9,20})/, 'valid');
						if (phone != 'valid'){
								err.include('Telefonní číslo je neplatné. Prosím zadejte pouze čísla (min. 9 znaků), případně mezeru a znaménko +.');
						}
				}
				
				// username
				if ($('form-reg-username').value){
					  var username = $('form-reg-username').value;
					  if (username.length < 3 || username.length > 64){
							  err.include('Uživatelské jméno musí mít nejméně 3 a nejvíce 64 znaků.');
						}
				}

			}
			
			// file types
			// FLV, AVI, MPEG, MPG, WMV
			// JPEG, JPG, GIF
			// MP3, WAV, WMA
			
			// categories
			var category  = $('form-add-category-input').value;
			var title = $('form-add-title').value;
			var file = $('form-add-picture').value;
			var fileType = file.slice(-4).replace('.','');
			var text = $('form-add-story').value;
			var types = {
				pic: ['jpg','jpeg','gif'],
				av: ['flv','avi','mpeg','mpg','wmv','mp3','wav','wma']
			}
			
			if (title == '') err.include('Musíte zadat nadpis vtipu.');
			if (title.length > 0 && title.length < 3) err.include('Nadpis vtipu je příliš krátký. Zadejte prosím nejméně 3 znaky (a nejvíce 60 znaků).');
			if (title.length > 60) err.include('Nadpis vtipu je příliš dlouhý. Zadejte nejvíce 60 znaků.');
			
			
			// obrazkovy suchar
			if (category == 1){
				if (!file.length) err.include('Musíte přiložit obrázek, který chcete odeslat.');
				if (file.length && !types.pic.contains(fileType)) err.include('Nepodporovaný formát obrázku. Můžete nahrát jen obrázky ve formátech JPG nebo GIF.');
			}
			
			// textovy suchar
			if (category == 2){
				if (text.length < 3 || text.length > 15000) err.include('Suchar zadejte dlouhý alespoň 3 znaky a dlouhý nejvýše 15 000 znaků. Víc číst stejně nikdo nebude');
			}
			
			// audio/video
			if (category == 3){
				if (!file.length) err.include('Musíte přiložit video nebo audio soubor, který chcete odeslat.');
				if (file.length && !types.av.contains(fileType)) err.include('Nepodporovaný formát audia/videa. Nahrát můžete video s příponou FLV, AVI, MPEG, WMV nebo audio s příponou MP3, WAV nebo WMA.');
			}

      // vyhodnoceni
			if (err.length){
			  	alert(err.join('\n\n'));
			} else {
			  	$('form-add').submit();
			}
			
		}
		
};


var Suchar = {
	
	  init: function(){
			
			// text items
			var items = $$('#main-content .item .text');
			items.setStyle('cursor', 'pointer');
			items.each(function(item){
			  item.addEvent('click', function(event){
				  event.stop();
					window.location = item.getParent('div').getElement('a').get('href');
				});
			});
			
			// sing up form
			if ($('form-singup')) { SingUpForm.init(); }
			
			// send joke form
			if ($('form-send-joke')) { SendJokeForm.init(); }
			
			// flash player
			if ($('flash-container')) { AVPlayer.init(); }
			
			// add joke form 
			if ($('form-add')) { AddForm.init(); }
			
			// banner
			if ($('banner')){
				var bannerFx = new Fx.Tween('banner', { property: 'opacity', duration: 250 });
				bannerFx.set(1);
				$('banner-button-close').addEvent('click', function(event){
				  event.stop();
					bannerFx.start(0);
				});
			}
			
		}
};

window.addEvent('domready', function(){

  Suchar.init();
	
});