/**
 * Frontpage JS
 */
window.addEvent('domready' , function(){	
	/****************************
	 * AUTOCOMPLETERS
	 ****************************/
	autocompleterCityInvoice = new VillamAutocompleter('invoice_city', {
		'postData': {
			'autocompleter_type': 'city'
		}
	});
	
	autocompleterCityPost = new VillamAutocompleter('post_city', {
		'postData': {
			'autocompleter_type': 'city'
		}
	});

	autocompleterStreetInvoice = new VillamAutocompleter('invoice_street', {
		'postData': {
			'autocompleter_type': 'street'
		},
		'onRequest' : function(){
			this.setOptions({
				'postData' : {
					'autocompleter_city' : $('invoice_city').get('value')
				}
			})
		}
	});
	
	autocompleterStreetPost = new VillamAutocompleter('post_street', {
		'postData': {
			'autocompleter_type': 'street'
		},
		'onRequest' : function(){
			this.setOptions({
				'postData' : {
					'autocompleter_city' : $('post_city').get('value')
				}
			})
		}
	});	
		
	/****************************
	 * AJAX CALL INSTANCES
	 ****************************/	
	// ajaxCalculateOrder
	ajaxCalculateOrder = new AJAXCall({
		'data' : {
			'task' : 'calculateorder'
		}
	});
	ajaxCalculateOrder.addEvent('complete' , function(response){
		$('deadline_date').innerHTML 	= response.deadline_date;
		$('deadline_time').innerHTML 	= response.deadline_time;
		$('price_netto').innerHTML		= response.price_netto;
		$('price_brutto').innerHTML		= response.price_brutto;
	});
	
	// ajaxGetDestinationLanguages
	ajaxGetDestinationLanguages = new AJAXCall({
		'data' : {
			'task' : 'getdestinationlanguages'
		},
		json : false
	});	
	ajaxGetDestinationLanguages.addEvent('complete' , function(response){
		$('destination-language-container').getElement('#destination_language').dispose();
		$('destination-language-container').innerHTML = response;
		destinationLanguage = new DropdownSelect($('destination_language'));	
		destinationLanguage.addOnChangeCallback(function(select, value, text){
			ajaxCalculateOrder.send();
		});
		ajaxCalculateOrder.send();
	});
	
	// ajaxEmailCheck
	ajaxCheckEmail = new AJAXCall({
		'data' : {
			'task' : 'checkemail'
		}
	});
	ajaxCheckEmail.addEvents({
		'request' : function(){
			$(document).getElement('#box-useraccount #email-input-container').getSlide().hide();
		},
		'complete' : function(response){
			if (response.member == -1){
				refreshEmailInput(true);
				messageBox.show(response.box);
				return;
			}
			if (!response.loggedin) {
				refreshEmailInput(false);
				$(document).getElement('#box-useraccount #email-text-container').innerHTML = $(document).getElement('#box-useraccount #email-input-container input').get('value');
				new Element('a', {
					'html': VText('Modify'),
					'href': 'javascript:return;',
					'events': {
						'click': function(e){
							e.stop();
							refreshInputs(['name', 'password', 'phone', 'confirm_password'], false);
							refreshEmailInput(true);
						}
					}
				}).inject($(document).getElement('#box-useraccount #email-text-container'));
			}
			if (response.member){
				if (orderOrEmailSelector.getSelectedValue() == 'email'){
					// store order and send email
					ajaxStoreOrder.send().chain(function(response){
						if (response.result) ajaxSendOfferEmail.send();
					});
				} else {
					refreshInputs([ 'name' , 'phone' ] , false);
					if (!response.registered) {
						refreshInputs(['password'] , true , [VText('PASSWORD')]);
						refreshInputs(['confirm_password'], true);
						useraccountAction = function(){
							ajaxRegisterUser.send();
						};						
					} else {
						refreshInputs(['password'] , true , [VText('TYPE EXISTING PASSWORD')]);
						refreshInputs(['confirm_password'], false);
						useraccountAction = function(){
							ajaxLoginUser.send();
						};	
					}				
				}
			} else {
				if (orderOrEmailSelector.getSelectedValue() == 'email'){
					refreshInputs([ 'name' , 'phone' ] , true);
					refreshInputs([ 'password' , 'confirm_password' ] , false);
					// on click send email
					useraccountAction = function(){
						ajaxStoreOrder.send().chain(function(response){
							if (response.result) ajaxSendOfferEmail.send();
						})
					};
				} else {
					refreshInputs([ 'confirm_password' , 'name' , 'phone' ] , true);
					refreshInputs([ 'password' ] , true , [VText('PASSWORD')]);
					useraccountAction = function(){
						ajaxRegisterUser.send();
					};							
				}
			}
		}
	});		
	
	// ajaxRegisterUser
	ajaxRegisterUser = new AJAXCall({
		'data' : {
			'task' : 'registeruser'
		}
	});
	ajaxRegisterUser.addEvent('complete' , function(response){
		messageBox.show(response.box);
		if (response.result != 0){
			if (boxDocumentsFx.isOpened()) return;
			boxUseraccountFx.close();
			boxUseraccountFx.addEvent('close' , function(){
				boxDocumentsFx.open();
			})		
		}
	});
	
	// ajaxStoreUserDetails 
	ajaxStoreUserDetails = new AJAXCall({
		'data' : {
			'task' : 'storeuserdetails'
		}
	});
	
	// ajaxLoginUser
	ajaxLoginUser = new AJAXCall({
		'relatedContainers' : [$('useraccount_form')],
		'data' : {
			'task' : 'loginuser'
		}
	});	
	ajaxLoginUser.addEvent('complete' , function(response){
		messageBox.show(response.box);
		if (response.result != 0){
			//refresh login box
			new AJAXCall({
				url					: '/index.php',
				method				: 'post',				
				'data' : {
					'controller' : 'loginbox',
					'task' : 'displayajax',
					'login_action' : ''
				},
				'json' : false
			}).send().chain(function(response){
				$('login-box-container').innerHTML = response;
			});
			// show document upload box
			if (!boxUseraccountFx.isOpened()) return;
			boxUseraccountFx.close();
			boxUseraccountFx.addEvent('close' , function(){
				boxDocumentsFx.open();
			})
		}			
	});
	
	// get user details
	ajaxGetUserDetails = new AJAXCall({
		'data' : {
			'task' : 'getuser'
		}
	});
	
	// get user
	ajaxGetUser = new AJAXCall({
		'data' : {
			'task' : 'getuser'
		}
	});
	ajaxGetUser.addEvent('complete' , function(response){
		if (boxUseraccountFx.isOpened()) return;
		// open user account box
		//$('services-button-continue').getSlide().slideOut()
		boxUseraccountFx.open();
		// if logged in
		if (response.id){
			var item = orderOrEmailSelector.getRadioItem('email');
			$(document).getElement('#box-useraccount #email-text-container').innerHTML = response.email;
			$(document).getElement('#box-useraccount #email').set('value' , response.email);
			$(document).getElement('#box-useraccount .villam-box-titlebar h2').set('text' , item.get('text'));
			$(document).getElement('#box-useraccount input#phone').getParent().set('text' , response.phone);
			$(document).getElement('#box-useraccount input#name').getParent().set('text' , response.name);
			refreshInputs([ 'name' , 'phone' ] , true);
			refreshInputs([ 'password' , 'confirm_password' ] , false);
			refreshEmailInput(false);
			// 
			$('useraccount-button-continue').set('html' , VText('SEND OFFER EMAIL'));
			orderOrEmailSelector.cbOnChange = [];
			orderOrEmailSelector.addOnChangeCallback(function(radiogroup, item, value){
				$(document).getElement('#box-useraccount .villam-box-titlebar h2').set('text' , item.get('text'));
				if (value == 'email') {
					$('useraccount-button-continue').getSlide().slideIn();
					useraccountAction = function(){
						ajaxCheckEmail.send();
					};
				} else {
					$('useraccount-button-continue').getSlide().slideOut();
					useraccountAction = function(){};
				}
			});
			boxDocumentsFx.open();
		}
	});
	
	// ajaxSendOfferEmail
	ajaxSendOfferEmail = new AJAXCall({
		'data' : {
			'controller' : 'ajaxmail',
			'task' : 'sendoffermail'
		}
	});	
	ajaxSendOfferEmail.addEvent('complete' , function(response){
		messageBox.show(response.box);
		if (response.result == 1 && !response.loggedin) {
			refreshInputs(['name', 'password', 'phone', 'confirm_password'], false);
		}
	});
	
	// ajaxStoreOrder
	ajaxStoreOrder = new AJAXCall({
		'data' : {
			'task' : 'storeorder'
		}
	});
	ajaxStoreOrder.addEvent('complete' , function(response){
		if (!response.result){
			messageBox.show(response.box);
		} else {
			$('order_id').set('value' , response.order_id);
			fileUploader.setData({
				'order_id': response.order_id
			});
		}
	});
	
	/****************************
	 * INSTANTOFFER BOX CONTENT
	 ****************************/
	// source language
	sourceLanguage = new DropdownSelect($('source_language'));	
	sourceLanguage.addOnChangeCallback(function(select, value, text){
		ajaxGetDestinationLanguages.send();		
	});
	
	// destination language
	destinationLanguage = new DropdownSelect($('destination_language'));	
	destinationLanguage.addOnChangeCallback(function(select, value, text){
		ajaxCalculateOrder.send();
	});
	
	// service selector
	translationService = new CheckboxGroup($('translation_service'));
	translationService.addOnChangeCallback(function(checkbox, item, value){
		if (item.relatedInput.get('name') == 'is_translation'){
			if (!checkbox.isChecked('is_lectoring'))
				checkbox.toggleItem(checkbox.getItem('is_translation_stupid'));
			else if (checkbox.isChecked('is_translation') && checkbox.isChecked('is_translation_stupid')) {
				checkbox.toggleItem(checkbox.getItem('is_translation_stupid'));
			}
		}
		if (item.relatedInput.get('name') == 'is_translation_stupid'){
			if (!checkbox.isChecked('is_lectoring'))
				checkbox.toggleItem(checkbox.getItem('is_translation'));
			else if (checkbox.isChecked('is_translation') && checkbox.isChecked('is_translation_stupid')) {
				checkbox.toggleItem(checkbox.getItem('is_translation'));
			}
		}
		if (item.relatedInput.get('name') == 'is_lectoring' && value == 0 &&
			(!checkbox.isChecked('is_translation') && !checkbox.isChecked('is_translation_stupid'))
		){
			checkbox.toggleItem(checkbox.getItem('is_translation'));
		}
		ajaxCalculateOrder.send();
	});
	
	// extra service selector
	translationServiceExtras = new CheckboxGroup($('translation_service_extras'));	
	translationServiceExtras.addOnChangeCallback(function(){
		ajaxCalculateOrder.send();
	});
	
	// character count
	$('char_count').addEvent('change' , function(){
		ajaxCalculateOrder.send();
	});
	
	/****************************
	 * DOCUMENTS BOX CONTENT
	 ****************************/
	// comment
	commentFx = new Fx.Morph($('comment') , {
		duration: 300, 
		transition: Fx.Transitions.Expo.easeOut
	});
	
	// document upload
	fileUploader = new VillamFileGroup($(document).getElement('#villam-file-group-upload-documents') , {
		villamFileOptions : {
			showDownloadIco : false,
			data : {
				controller : 'file'
			}	
		},		
		villamFilePrefix: 'source-files',
		onNewVillamFile : function(){
			refreshCommentAreaSize();
		}
	});			
	
	refreshCommentAreaSize = function(){
		commentFx.start({
			'height' : $('villam-file-group-upload-documents').getStyle('height').toInt() - 12 - 15
		});
	} 
	
	/****************************
	 * USERACCOUNT BOX CONTENT
	 ****************************/
	// orderoremail radio button group
	orderOrEmailSelector = new RadiobuttonGroup($('orderoremail'));
	orderOrEmailSelector.addOnChangeCallback(function(radiogroup, item, value){
		$(document).getElement('#box-useraccount .villam-box-titlebar h2').set('text' , item.get('text'));
		refreshInputs([ 'name' , 'password' , 'phone' , 'confirm_password' ] , false);
		refreshEmailInput(true);			
	});		
	
	// refreshInputs
	refreshInputs = function(nameList , show, labels){
		show = $pick(show , true);
		nameList.each(function(name , i){
			$(document).getElements('#box-useraccount .useraccount-row-' + name).each(function(e){
				if (show){
					e.getSlide().slideIn();
				} else {
					e.getSlide().slideOut();	
				}
				var input = e.getElement('input');
				if ($chk(input)) input.set('disabled' , !show);
				if ($defined(labels) && $chk(labels) && $chk(labels[i])){
					inputLabel = e.getElement('label');
					if ($chk(inputLabel)){
						inputLabel.set('text' , labels[i]);
					}
				}
			});
		});
	};
	
	// refreshEmailInput
	refreshEmailInput = function(show){
		show = $pick(show , true);
		if (show) {
			$(document).getElement('#box-useraccount #email-text-container').getSlide().hide();
			$(document).getElement('#box-useraccount #email-input-container').getSlide().show();
			$(document).getElement('#box-useraccount #email-input-container input').disabled = false;
			useraccountAction = function(){
				ajaxCheckEmail.send();
			};			
		} else {
			$(document).getElement('#box-useraccount #email-text-container').getSlide().show();
			$(document).getElement('#box-useraccount #email-input-container input').disabled = true;
			$(document).getElement('#box-useraccount #email-input-container').getSlide().hide();
		}
	}
	refreshEmailInput(true);
	refreshInputs([ 'password' , 'confirm_password' , 'name' , 'phone' ] , false);
	
	/****************************
	 * USERDETAILS BOX CONTENT
	 ****************************/
	// different post address selector
	differentPostAddressSelector = new CheckboxGroup($('different_post_address_selector'));
	differentPostAddressSelector.addOnChangeCallback(function(checkbox, item, value){
		showHidePostAddressFields(value.toInt());
		if (!value.toInt()) $formCheckUserdetails.onSubmit();
	});	
	showHidePostAddressFields = function( show ){
		$('box-userdetails-post-details').getElements('p').each(function(e){
			if (show) {
				e.getSlide().slideIn();
			} else {
				e.getSlide().slideOut();
			}
			var input = e.getElement('input');
			if ($chk(input)) input.set('disabled' , !show);
		})		
	};
	showHidePostAddressFields(differentPostAddressSelector.isChecked('different_post_address'));
	
	/*************
	 * BOX FXs
	 *************/	
	boxServicesFx = new VillamBoxFx( $('box-services') , {
		scrollTo : $('box-instantoffer')
	});
	boxServicesFx.close();
	
	boxUseraccountFx = new VillamBoxFx( $('box-useraccount'), {
		scrollTo : $('box-services'),
		scrollWindow : false
	});
	boxUseraccountFx.close();
		
	boxDocumentsFx = new VillamBoxFx($('box-documents'), {
		scrollTo : $('box-services')
	});
	boxDocumentsFx.close();
	boxDocumentsFx.addEvent('open' , function(){
		ajaxStoreOrder.send();
		ajaxGetUserDetails.addEvent('complete' , function(response){
			$('invoice_name').set('value' , response.invoice_name);
			$('invoice_country').set('value' , response.invoice_country);
			$('invoice_zipcode').set('value' , response.invoice_zipcode);
			$('invoice_city').set('value' , response.invoice_city);
			$('invoice_street').set('value' , response.invoice_street);
			
			$('post_name').set('value' , response.post_name);
			$('post_country').set('value' , response.post_country);
			$('post_zipcode').set('value' , response.post_zipcode);
			$('post_city').set('value' , response.post_city);
			$('post_street').set('value' , response.post_street);			
		});
		ajaxGetUserDetails.send();	
	});
	
	boxUserdetailsFx = new VillamBoxFx( $('box-userdetails'));
	boxUserdetailsFx.close();
	
	/****************************
	 * FORM CHECK - VALIDATORS
	 ****************************/
	$formCheckUseraccount = new FormCheck('useraccount_form', {
		display : {
			errorsLocation	: 1,
			indicateErrors	: 2,
			closeTipsButton	: 1,
			showErrors		: 1
		}
	});
	
	$formCheckUserdetails = new FormCheck('userdetails_form', {
		display : {
			errorsLocation	: 1,
			indicateErrors	: 2,
			closeTipsButton	: 1,
			showErrors		: 1
		}
	});
	
	/*************
	 * BUTTONS
	 *************/
	// instant offer button
	$('instantoffer-button-continue').addEvent('click' , function(e){
		if (boxServicesFx.isOpened()) return;
		this.getSlide().slideOut();		
		ajaxCalculateOrder.send();
		boxServicesFx.open();
		ajaxGetUser.send();
	});
	
	// services button
	/*
	$('services-button-continue').addEvent('click' , function(e){
		ajaxGetUser.send();
	});
	*/
	
	// useraccount button
	useraccountAction = function(){
		ajaxCheckEmail.send();
	};
	$('useraccount-button-continue').addEvent('click' , function(e){
		$formCheckUseraccount.onSubmit();		
		if (!$formCheckUseraccount.isFormValid()) {
			return;
		}
		useraccountAction.run();
	});
	
	// documents button
	$('documents-button-continue').addEvent('click' , function(){
		if (boxUserdetailsFx.isOpened()) return;
		this.getSlide().slideOut();		
		boxUserdetailsFx.open();
	});
		
	// userdetails button
	$('userdetails-button-continue').addEvent('click' , function(){
		$formCheckUserdetails.onSubmit();		
		if (!$formCheckUserdetails.isFormValid()) {
			return;
		}
		ajaxStoreUserDetails.send().chain(function(){
			ajaxStoreOrder.send({
				'ordered' : 1
			}).chain(function(response){
				var uri = url_myaccount.toURI();
				uri.setData({
					'order_id': response.order_id
				} , true);
				document.location.href = uri.toString();
			});
		});
	});
	
	/*****************************
	 * SHOW VILLAM PROMO VIDEO
	 *****************************/
	$(document).addEvent('mousemove' , function(event){
		if (event.page.y < 10 + $(document.body).getScroll().y && $chk($('villam-show-video-button'))){	
			if (window.showedMessage == undefined || window.showedMessage == false){
				// dont show now again				
				window.showedMessage = true;
				// store in cookie the fact that message box already alerted
				new AJAXCall({
					'data' : {
						'task' : 'promovideoalerted'
					}
				}).send();					
				// show message box
				messageBox.show({
					type : MESSAGE_INFO,
					title : VText('MESSAGE BOX DO NOT LEAVE US TITLE'),
					message : VText('MESSAGE BOX DO NOT LEAVE US MESSAGE'),
					buttons : [
						{ 
							title : VText('MESSAGE BOX DO NOT LEAVE US BUTTON SHOW IT'),
							onClick : function(){
								$('villam-show-video-button').fireEvent('click');
							}
						},
						{ 
							title : VText('MESSAGE BOX DO NOT LEAVE US BUTTON CANCEL')
						},					
					]
				});
			}
		}
	});	
	
	/*****************************
	 * IF CONTINUE EXISTING OFFER
	 *****************************/
	orderIdInput = $('order_id');	
	if ($chk(orderIdInput) && orderIdInput.get('value') != 0){
		// select the second option
		var item = orderOrEmailSelector.getRadioItem('order')
		if ($chk(item)) item.fireEvent('click');
		$('useraccount-button-continue').getSlide().slideOut();
		useraccountAction = function(){};		
		// disable scrolling
		boxServicesFx.options.scrollWindow = false;
		boxServicesFx.fx.options.duration = 0;
		boxUseraccountFx.options.scrollWindow = false;
		boxUseraccountFx.fx.options.duration = 0;		
		boxDocumentsFx.options.scrollWindow = false;
		boxDocumentsFx.fx.options.duration = 0;
		boxUserdetailsFx.options.scrollWindow = false;
		boxUserdetailsFx.fx.options.duration = 0;
		// open box
		$('instantoffer-button-continue').fireEvent('click');
		//$('services-button-continue').fireEvent('click');
		ajaxGetUser.send();
		// set file group orderid
		fileUploader.setData({
			'order_id': orderIdInput.get('value')
		});
		// refresh size of comment area
		refreshCommentAreaSize();
		// has file
		if (hasOrderFile){
			$('documents-button-continue').fireEvent('click');
		}
		// scroll to documents box
		window.addEvent('load' , function(){
			boxDocumentsFx.fx.addEvent('complete' ,function(){
				boxServicesFx.stopScroll();
				boxUseraccountFx.stopScroll();
				boxDocumentsFx.stopScroll();
				boxUserdetailsFx.stopScroll();			
				(function(){
					var scroll = new Fx.Scroll(window, { 
						wait: false, 
						duration: 2500,
						transition: Fx.Transitions.Expo.easeOut
					});					
					scroll.toElement($('box-documents'));
				}).delay(1000);
			});
		});
	}
});