window.addEvent('domready', function() {
	dyn_workshop_checkParticipantsInit();
	dyn_workshop_copyAddressInit();
	$$('.dyn-application-form .instruct').each(function(element) {
		element.getParent('li').addEvent('mouseover', function() {
			$(this).getElement('.instruct').setStyle('visibility', 'visible');
		});
		element.getParent('li').addEvent('mouseout', function() {
			$(this).getElement('.instruct').setStyle('visibility', 'hidden');
		});
	});
});

function dyn_workshop_checkParticipants(sender) {
	var participants = $('dyn_workshop_form_course');
	var checked = false;
	if(participants) {
		participants = participants.getElements('input.participant[type=checkbox]');
		for (i = 0; i < participants.length; i++) {
			if (participants[i].checked && !participants[i].disabled) {
				checked = true;
			}
		}
		$('dyn_workshop_submitLink').setStyle('visibility', checked ? 'visible' : 'hidden');
	}	
}

function dyn_workshop_checkParticipantsInit(sender) {
	var participants = $('dyn_workshop_form_course');
	if(participants) {
		participants = participants.getElements('input.participant[type=checkbox]');
		if(participants.length == 1 && !participants[0].disabled) {
			participants[0].checked = true;
			$('dyn_workshop_submitLink').setStyle('visibility', 'visible');
		}
	}	
}

function dyn_workshop_removeCourseFromParticipant(sender, course, participant, action) {
	var request = new Request({
		method: 'post',
		url: action,
		data: new Hash({
			dyn_workshop_course: course,
			dyn_workshop_participantKey: participant,
			dyn_workshop_action: 'removeCourse',
			dyn_workshop_rpc: true
		}).toQueryString(),
		onSuccess: function(responseText, responseXML) {
			var response = JSON.decode(responseText);
			if(!response.error) {
				$(sender).getParent().destroy();
				var input = $('dyn_workshop_participants_'+participant);
				input.disabled = false;
				input.checked = false;
				$('dyn_workshop_instruments_'+participant).setStyle('visibility', 'visible');
				if(response.courseCount) {
					$('dyn_workshop_basket_courseCount').set('text', response.courseCount);
					$('dyn_workshop_basket_totalPrice').set('text', response.totalPrice);
				} else {
					$$('.dyn-workshop-quickBasket').each(function(basket) {
						basket.destroy();
					})
				}
			}
		}
	});
	request.send();
	return false;
}

function dyn_workshop_copyAddress(sender) {
	if(sender.target.selectedIndex > 0) {
		if(sender.target.value == 'dyn_workshop_newAddress') {
			var address = dyn_workshop_addressNewValues;
		} else {
			dyn_workshop_addressNewValues = new Hash;
			dyn_workshop_addressFields.each(function(field, key) {
				dyn_workshop_addressNewValues.set(key, field.value);
			});			
			var address = new Hash(JSON.decode(sender.target.value));
		}
		dyn_workshop_addressFields.each(function(field, key){
			if(key == 'country') {
				field.getElement('option[value='+address.country+']').selected = true;
			} else if(key == 'gender') {
				field.getElement('option[value='+address.gender+']').selected = true;
			} else {
				field.value = address.get(key);
			}
		})
	}
	dyn_workshop_addressFields.each(function(field) {
		field.addEvent('keyup', dyn_workshop_updateAddressSelect);
	});
}

function dyn_workshop_updateAddressSelect(sender) {
	var select = $('dyn_workshop_copyAddress');
	var option = select.getElement('option[value=dyn_workshop_newAddress]');
	if(option) {
		option.selected = true;
	} else {
		select.grab(new Element('option', {value: 'dyn_workshop_newAddress', text: 'Neue Adresse', selected: true}));
	}
	dyn_workshop_addressFields.each(function(field) {
		field.removeEvent('keyup', dyn_workshop_updateAddressSelect);
	});
}

function dyn_workshop_copyAddressInit() {
	var select = $('dyn_workshop_copyAddress');
	if(select) {
		select.addEvent('change', dyn_workshop_copyAddress);
		
		var form = select.getParent('form');
		dyn_workshop_addressFields = new Hash({
			address		: form.getElement('input[dynid=address.address]'),
			address2	: form.getElement('input[dynid=address.address2]'),
			city		: form.getElement('input[dynid=address.city]'),
			zip			: form.getElement('input[dynid=address.zip]'),
			country		: form.getElement('select[dynid=address.country]'),
			homePhone	: form.getElement('input[dynid=homePhone]'),
			mobilePhone	: form.getElement('input[dynid=mobilePhone]'),
			mailAddress	: form.getElement('input[dynid=mailAddress]')
		});
		
		if($('checkoutForm')) {
			dyn_workshop_addressFields.set('gender',	form.getElement('select[dynid=gender]'));
			dyn_workshop_addressFields.set('firstname',	form.getElement('input[dynid=name.firstname]'));
			dyn_workshop_addressFields.set('lastname',	form.getElement('input[dynid=name.lastname]'));
		}
		
		dyn_workshop_addressFields.each(function(field) {
			field.addEvent('keyup', dyn_workshop_updateAddressSelect);
			field.addEvent('change', dyn_workshop_updateAddressSelect);
		});
	}
}

function dyn_workshop_rentDjembe(sender) {
	var form = $(sender).getParent('form');
	form.dyn_workshop_action.value = 'addInstrument';
	form.grab(new Element('input', {name: 'dyn_workshop_instrument', type: 'hidden', value: 'djembe'}));
	form.submit();
}

function dyn_workshop_rentConga(sender) {
	var form = $(sender).getParent('form');
	form.dyn_workshop_action.value = 'addInstrument';
	form.grab(new Element('input', {name: 'dyn_workshop_instrument', type: 'hidden', value: 'conga'}));
	form.submit();
}

function dyn_workshop_rentCajon(sender) {
	var form = $(sender).getParent('form');
	form.dyn_workshop_action.value = 'addInstrument';
	form.grab(new Element('input', {name: 'dyn_workshop_instrument', type: 'hidden', value: 'cajon'}));
	form.submit();
}

