var SCF = {
	
	init: function(){

		navigationSlider.init();
		
		SCF.Newsletter.init();

		if(document.id('join-us')) SCF.JoinUs.init();
		
		if(document.id('contact-us')){				
			var form = document.id('form-contact-us');
			var reqFields = new Array('contact_name', 'contact_email', 'id-holder-2');
			valid = new ContactValidator(form, reqFields, '', 'agreement');				
		}

		if(document.id('screen-fader') && document.id('popup')){
			var sw = new showWindow();
			$$('a.show-window').addEvent('click', function(event){
			event.preventDefault();
				sw.open();
			});	
			document.id('screen-fader').addEvent('click', function(event){
				event.preventDefault();
				sw.close();
			});	
			$$('span.close-popup').addEvent('click', function(){
				sw.close();
			});
		}

		var arrowBlock = $$('#next-blok a.next');

		arrowBlock.addEvents({
		
				mouseenter: function(){
					this.getElement('span.green-arrow-lg').set('morph', {duration: 400, transition: 'expo:out'});
					this.getElement('span.green-arrow-lg').morph({
					'margin-left': 10
				  	});
				},
			
				mouseleave: function(){
					this.getElement('span.green-arrow-lg').set('morph', {duration: 100});
					this.getElement('span.green-arrow-lg').morph({
					'margin-left': 0
				  	});
				}
		});


		var arrowMore = $$('a.more');

		arrowMore.addEvents({		
			mouseenter: function(){
				this.set('morph', {unit: '%', duration: 100});
				this.morph({
				'background-position': '100'
			  });
			},		
			mouseleave: function(){
				this.set('morph', {unit: '%', duration: 100});
				this.morph({
				'background-position': '98',
				unit: '%' 
			  });
			}		
		  });


  		$$('a.more').setStyle('background-position', '98%');

		var arrowMoreHome = $$('a.green-arrow');
 
		arrowMoreHome.addEvents({		
			mouseenter: function(){
				this.set('morph', {duration: 100});
				this.morph({
				'background-position': '255'
			  });
			},		
			mouseleave: function(){
				this.set('morph', {duration: 100});
				this.morph({
				'background-position': '245'
			  });
			}		
		});

  		$$('a.green-arrow').setStyle('background-position', '245');

		if(document.id('pcm-slide')){
			var myVerticalSlide = new Fx.Slide('pcm-slide');
			myVerticalSlide.hide();
		
			document.id('pcm-toggle').addEvent('click', function(event){
				event.stop();
				myVerticalSlide.toggle();
			});
		}
			
		new Form.Placeholder('newsmail');	
			
	}	

};

SCF.JoinUs = {

	init: function(){
		
			var form = document.id('form-join-us');
			var reqFields = new Array('contact_name', 'contact_email');
			var reqFiles = new Array('contact_letter', 'contact_cv');
			valid = new Validator(form, reqFields, reqFiles, 'agreement');
		
			fi1 = new FileInput('contact_letter_cont', 'contact_letter');
			fi2 = new FileInput('contact_cv_cont', 'contact_cv');
			
			input1 = document.id('contact_letter_cont');
			input2 = document.id('contact_cv_cont');
			
			input1.addEvents({
				'mouseover': function(e){
					fi1.start(e);
				},
				'change': function(){
					fi1.change();
				}				
			});			
			
			input2.addEvents({
				'mouseover': function(e){
					fi2.start(e);
				},
				'change': function(){
					fi2.change();
				}
			});	
	}
};

SCF.Newsletter = {

	init: function(){
		this.form = document.id('form-newsletter');
		this.msg = document.id('newsletter-msg');
		this.submitBtn = this.form.getElement('input[type="image"]');
		
		var req = new Request({method: 'post', url: '/includes/newsletter.php'});
		
		this.form.addEvent('submit', function(event){
			event.preventDefault();
			if(this.validate()){
				var val = document.id('newsmail').get('value');		
				req.send('newsmail=' + val);		
				this.form.setStyle('display', 'none');
				this.msg.set('text', 'Your request has been sent successfully. Thank you.');
			}	
		}.bind(this));
		
	},
	
	validate: function(){
		var valid = true;
		this.requiered = ['newsmail']
		this.requiered.each(function(inp){
			var inpVal = document.id(inp);
			if(inpVal.get('value') == '') { 
				inpVal.addClass('err');
				valid = false;
			} else if(inpVal.hasClass('err')){
				inpVal.removeClass('err');
			}

		});
		this.email = document.id('newsmail');
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		var address = this.email.get('value');
		if(reg.test(address) == false) {
				this.email.addClass('err');
				valid = false;
		}
			
		return valid;
			
	}
	
};

var navigationSlider = {

	init: function(){
		var self = this;
		this.element = document.id('nav');	
		this.current = document.id('current') || false;
		if(this.current) this.element.addEvent('mouseleave', self.reset.bind(self));
		else this.element.addEvent('mouseleave', self.hide.bind(self));
		this.element.getElements('li').addEvent('mouseenter', function(){ self.move(this) });
		
		this.marker = document.id('nav-marker');
		this.marker.set('morph', {duration: 400, transition: 'quad:out', link: 'cancel'});
		if(this.current) this.findDefaultPosition();
	},
	
	findDefaultPosition: function(){
		var position = this.calculatePosition(this.current);
		var width = this.calculateWidth(this.current);
		this.marker.setStyles({'left': position, 'width': width});	
	},
	
	calculatePosition: function(item){
		var position = (item.getPosition(this.element).x).toInt();
		return position;
	},
	
	calculateWidth: function(item){
		var width = (item.getSize().x).toInt();	
		return width;
	},
	
	move: function(item){
		this.marker.setStyle('opacity', 1);
		var position = this.calculatePosition(item);
		var width = this.calculateWidth(item);
		this.marker.morph({'left': position, 'width': width});
	},
	
	reset: function(){
		this.move(this.current);
	},
	
	hide: function(){
		this.marker.set('tween', { property: 'opacity', duration: 200 })
		this.marker.tween(0);
	}
	
};

var showWindow = new Class({
	
	Binds: ['close'],
	
	Implements: Options,
    
	options: {
		windowId: 'popup',
		screenFader: 'screen-fader',
		fadeSpeed: 200
    },
	
	initialize: function(options){

		this.setOptions(options);
		this.wrapperBox = document.id(this.options.windowId);
		this.screenFader = document.id(this.options.screenFader);
		this.size = $(document.body).getScrollSize();
				
	},
	
	open: function(){
		this.screenFader.setStyles({
			'display': 'block',
			'min-height': this.size.y + 'px'
		});
		
		this.screenFader.set('opacity', '0').set('tween', { duration: this.options.fadeSpeed }).fade(0.4);
		this.wrapperBox.setStyle('display', 'block');
		this.wrapperBox.set('opacity', '0').set('tween', { duration: this.options.fadeSpeed }).fade(1);
	},
	
	close: function(){
		this.screenFader.set('opacity', '0.4').set('tween', { duration: this.options.fadeSpeed }).fade(0);
		this.wrapperBox.set('tween', { duration: this.options.fadeSpeed }).fade(0);
	}
	
});

var FileInput = new Class({
	
	Implements: Options,
    
	options: {
		offsetX: 50,
		offsetY: 10
    },
	
	initialize: function(cont, elem, options){

		this.cont = document.id(cont);
		this.output = this.cont.getElements('span.output')[0];
		this.file = document.id(elem);
				
	},
	
	start: function(e){
		
		this.mousePos = e.page.x;
		this.position = this.file.getPosition();
		this.contPos = this.cont.getPosition();
		this.setX = e.page.x - this.contPos.x - this.options.offsetX;
		this.setY = e.page.y - this.contPos.y - this.options.offsetY;
		this.file.setPosition({x: this.setX, y: this.setY});
		
		if(Browser.ie){
			this.fileName = (this.file.get('value')).replace('C:\\fakepath\\', '');
			this.output.set('text', this.fileName);	
		}
	},
	
	change: function(){
		this.fileName = (this.file.get('value')).replace('C:\\fakepath\\', '');
		this.output.set('text', this.fileName);		
	}
	
});


var Validator = new Class ({

	initialize: function(form, reqFields, reqFiles, checkBox){
		
		this.requieredFields = reqFields;
		this.requieredFiles = reqFiles;
		this.form = form;
		this.submitBtn = this.form.getElement('button[type=submit]');
		this.submitBtn.setStyles({cursor: 'default', opacity: 0.5}).disabled = true;
		this.checkBox = document.id(checkBox);
		
		this.form.getElements('input[type=text]').addEvents({'keyup': (this.validate).bind(this), 'change': (this.validate).bind(this)});
		this.form.getElements('input[type=file]').addEvent('change', (this.validate).bind(this));
		this.checkBox.addEvent('click', (this.validate).bind(this));
	},	
	
	validate: function(){		
		this.check = true;		
		if(this.requieredFields.length) this.validateFields();
		if(this.requieredFiles.length) this.validateFiles();
		if(this.checkBox) this.validateCheck();		
		this.change();
	},
	
	validateFields: function(){
		this.requieredFields.each(function(field){
			var input = document.id(field);
			if (input.get('value') == ''){
				this.check = false;
			}
		}, this);	
	},
	
	validateFiles: function(){
		this.requieredFiles.each(function(file){
			var input = document.id(file);
			if (input.get('value') == ''){
				this.check = false;
			}
		}, this);
	},
	
	validateCheck: function(){
		if(!this.checkBox.checked) this.check = false;
	},
	
	change: function(){
		this.check == false ? this.disable() : this.enable();
	},
	
	disable: function(){
		this.submitBtn.setStyles({cursor: 'default', opacity: 0.5}).disabled = true;
	},
	
	enable: function(){
		this.submitBtn.setStyles({cursor: 'pointer', opacity: 1}).disabled = false;
	}
	
});

var ContactValidator = new Class({

	Extends: Validator,

	initialize: function(form, reqFields, reqFiles, checkBox){
				
		this.requieredFields = reqFields;
		this.requieredFiles = reqFiles;
		this.form = form;
		this.submitBtn = this.form.getElement('button[type=submit]');
		this.submitBtn.setStyles({cursor: 'default', opacity: 0.5}).disabled = true;
		this.checkBox = document.id(checkBox);
		
		document.id('drop-down-list-2').getElements('li').addEvent('click', (this.validate).bind(this));
		this.form.getElements('input[type=text]').addEvent('keyup', (this.validate).bind(this));
		this.checkBox.addEvent('click', (this.validate).bind(this));
		
	}
	
});

window.addEvent('domready', function(){ SCF.init(); });
