/**
 * Frontpage JS
 */

/**
 * Order the actual item and continue to the my account page
 */
orderAndContinueToNextPage = function(){
	ajaxStoreOrder.send().chain(function(response){
		var uri = url_myaccount.toURI();
		uri.setData({
			'order_id': response.order_id
		} , true);
		document.location.href = uri.toString();
	});
}

window.addEvent('domready' , function(){
	/****************************
	 * INITIALIZE VARIABLES
	 ****************************/
	orderIdInput = $('order_id');
	orderId = parseInt($chk(orderIdInput) ? orderIdInput.get('value') : 0);

	/****************************
	 * FLOATING TEXTAREA - CHARACTER COUNT
	 ****************************/
	if ($chk($('character-counter'))){
		var characterCounter = new FloatingTextarea({
			onSubmit : function(){
				$('size_count').set('value', this.getText().length);
			},
			texts : {
				submit : VText('OK'),
				cancel : VText('CANCEL'),			
				info : VText('CHARACTER COUNT INFORMATION'),
			}
		});
		$('character-counter').addEvent('click', function(){
			characterCounter.show();
		})
	}
	
	/****************************
	 * FORM CHECK - VALIDATORS
	 ****************************/
	$formCheckUseraccount = new FormCheck('useraccount_form', {
		display : {
			errorsLocation	: 1,
			indicateErrors	: 2,
			closeTipsButton	: 1,
			showErrors		: 1
		}
	});
	
	/*************
	 * BUTTONS
	 *************/
	// useraccount button
	useraccountAction = function(){
		ajaxCheckEmail.send();
	};
	$('useraccount-button-continue').addEvent('click' , function(e){
		$formCheckUseraccount.onSubmit();		
		if (!$formCheckUseraccount.isFormValid()) {
			return;
		}
		useraccountAction.run();
	});
	
	/*****************************
	 * 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')
						},					
					]
				});
			}
		}
	});		
		
	/****************************
	 * 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){
		if (response.result != 0){
			orderAndContinueToNextPage();
		} else {
			messageBox.show(response.box);
		}
	});
	
	// ajaxLoginUser
	ajaxLoginUser = new AJAXCall({
		'relatedContainers' : [$('useraccount_form')],
		'data' : {
			'task' : 'loginuser'
		}
	});	
	ajaxLoginUser.addEvent('complete' , function(response){
		if (response.result != 0){
			orderAndContinueToNextPage();
		} else {
			messageBox.show(response.box);
		}			
	});
	
	// get user
	ajaxGetUser = new AJAXCall({
		'data' : {
			'task' : 'getuser'
		}
	});
	ajaxGetUser.addEvent('complete' , function(response){
		// 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);
			// 
			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 {
					if (orderId) {
						$('useraccount-button-continue').getSlide().slideOut();
					}
					useraccountAction = function(){
						orderAndContinueToNextPage();
					};
				}
			});
		}
	});
	
	// 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);
		}
	});
	
	/****************************
	 * 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
	$('size_count').addEvent('change' , function(){
		var value = parseInt(this.value, 10);
		if (isNaN(value)) value = 0;
		this.value = value;
		
		ajaxCalculateOrder.send();
	});
	
	/****************************
	 * 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', 'phone', 'password', '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);
	
	// refresh prices
	ajaxCalculateOrder.send();
	
	// get informations about user
	ajaxGetUser.send();

	/*****************************
	 * IF CONTINUE EXISTING OFFER
	 *****************************/
	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(){};		
	}
});
