function onInternalCandidatesSubscribed(params, transport) {
	var candidates = transport.responseText.evalJSON();

	for (jobSeekerId in candidates) {
		displayElement('jobSeekerSelectionProcessesHREF' + jobSeekerId, 'block');
	}
	if (params.referer == 'SEARCH') {
		$('jobSeekerMasterCheckBox').checked = true;
		$('jobSeekerMasterCheckBox').click();
	}

	displayElement('popupLoadingDiv', 'none');
	displayElement('transparentDiv', 'none');
	displayElement('actionPopup', 'none');
}

function onSelectionProcessClosed(params, transport) {
	document.location.href = params.redirectUrl;
}

function onStageClosed(params, transport) {
	var response = transport.responseText.evalJSON();
	var stage = response['stage'];
	var candidate = response['candidate'];

	onStageStateChanged(stage);

	if (candidate.closed) {
		onCandidateClosed(candidate);
	}

	displayElement('popupLoadingDiv', 'none');
	displayElement('transparentDiv', 'none');
	displayElement('actionPopup', 'none');
}

function onStageStateChanged(stage) {
	var stateClassName = '';

	switch (stage.state) {
	case 'NOT_STARTED':
		stateClassName = '';
		break;
	case 'IN_PROGRESS':
		stateClassName = 'inprogress';
		break;
	case 'COMPLETED':
		stateClassName = 'completed';
		break;
	case 'ABORTED':
		stateClassName = 'aborted';
		break;
	}

	$('candidateStageStateColumn' + stage.id).className = stateClassName;
	displayElement('candidateStageCloseSpan' + stage.id, stage.closed ? 'none'
			: 'block');
	displayElement('candidateStageTasksSpan' + stage.id, stage.closed ? 'none'
			: 'block');
}

function onCandidateClosed(candidate) {
	var candidateClassName = '';

	for (counter = 0; counter < candidate.stages.length; counter++) {
		var stage = candidate.stages[counter];

		if (stage) {
			displayElement('candidateStageCloseSpan' + stage.id, 'none');
			displayElement('candidateStageTasksSpan' + stage.id, 'none');
		}
	}

	switch (candidate.state) {
	case 'OPEN':
		candidateClassName = '';
		break;
	case 'COMPLETED':
		candidateClassName = 'closed';
		break;
	case 'ABORTED':
		candidateClassName = 'aborted';
		break;
	}

	$('candidateRow' + candidate.id).className = candidateClassName;
}

function onTemplateRegistered(params, transport) {
	var template = transport.responseText.evalJSON();
	var templatesSelect = $('templateId');

	// display select (if it is disabled).
	templatesSelect.style.display = 'inline';
	// add new template to select.
	appendOptionToSelectInput(templatesSelect, template.name, template.id, true);
	$('registerTemplateP').className = 'inline';
	$('registerTemplateSpan').style.display = 'none';
	$('registerProcessFieldset').className = '';
	$('registerProcessInput').disabled = false;
	$('registerProcessInput').className = $('registerProcessInput').className
			.replace('disabled', '');

	var registerProcessForm = $('selectionProcessForm');
	for (i = 0; i < registerProcessForm.length; i++) {
		registerProcessForm.elements[i].disabled = false;
	}

	displayElement('popupLoadingDiv', 'none');
	displayElement('transparentDiv', 'none');
	displayElement('actionPopup', 'none');
	showSelect();
}

function onCandidateUnsuscribed(params, transport) {
	var response = transport.responseText.evalJSON();
	var candidate = response.unsubscribedCandidate;
	var reorderedCandidates = response.reorderedCandidates;

	// remove unsubscribed candidate.
	var candidateRow = $('candidateRow' + candidate.id);
	candidateRow.parentNode.removeChild(candidateRow);

	// When a candidate is unsubscribed all candidates with order greater than
	// unsubscribed candidate order must be reorder.
	for (counter = 0; counter < reorderedCandidates.length; counter++) {
		onCandidateReordered(reorderedCandidates[counter]);
	}

	displayElement('popupLoadingDiv', 'none');
	displayElement('transparentDiv', 'none');
	displayElement('actionPopup', 'none');
}

function onExternalCandidateSubscribed(params, transport) {
	window.location.reload();
}

function onTaskRegistered(params, transport) {
	var response = transport.responseText.evalJSON();
	var stage = response["stage"];

	onStageStateChanged(stage);
	displayElement('candidateStageTasksHistorySpan' + stage.id, 'block');
	displayElement('candidateStageCloseSpan' + stage.id, 'block');

	displayElement('popupLoadingDiv', 'none');
	displayElement('transparentDiv', 'none');
	displayElement('actionPopup', 'none');
}

function onCandidatesReordered(params, transport) {
	var candidates = transport.responseText.evalJSON();
	for (counter = 0; counter < candidates.length; counter++) {
		onCandidateReordered(candidates[counter]);
	}
}

function onCandidateReordered(candidate) {
	$('candidateOrderSpan' + candidate.id).innerHTML = candidate.order;
}

function onCandidateRated(params, transport) {
	var candidate = transport.responseText.evalJSON();
	for (counter = 5; counter >= 1; counter--) {
		var image = $('candidateRatingImage' + candidate.id + '_' + counter);
		image.src = (candidate.rating >= counter) ? image.src.replace('-off',
				'-on') : image.src.replace('-on', '-off');
		image.src = image.src.replace('-over', '');
	}
}

function onMouseOverCandidateRating(candidateId, rating) {
	for (counter = 1; counter <= rating; counter++) {
		var image = $('candidateRatingImage' + candidateId + '_' + counter);
		if (image.src.search('over') == -1) {
			image.src = image.src.replace('.png', '-over.png');
		}
	}
}

function onMouseOutCandidateRating(candidateId, rating) {
	for (counter = rating; counter >= 1; counter--) {
		var image = $('candidateRatingImage' + candidateId + '_' + counter);
		image.src = image.src.replace('-over', '');
	}
}

function onDragDashBoardCandidate(draggedCandidateRow) {
	if (draggedCandidateRow.className.search('move') == -1) {
		draggedCandidateRow.className = draggedCandidateRow.className + ' move';
	}
}

function onDropDashBoardCandidate(droppedCandidateRow,
		droppedTargetCandidateRow) {
	droppedCandidateRow.className = droppedCandidateRow.className.replace(
			'move', '');
}

function closeProcess(params) {
	if (typeof (params.action) == 'undefined') {
		displayTransparentDiv('transparentDiv', 'loadingDiv');
		new Ajax.Updater('actionPopup', params.controller, {
			method : 'get',
			parameters : {
				selectionProcessId : params.selectionProcessId
			},
			onSuccess : function(transport) {
				displayElement('loadingDiv', 'none');
				centerPopup('actionPopup', 'transparentDiv');
			},
			onFailure : function() {
				window.location.reload();
			}
		});
	} else {
		displayLoadingPopupDiv('actionPopup', 'popupLoadingDiv');
		new Ajax.Request(params.controller, {
			method : 'get',
			parameters : {
				action : params.action,
				selectionProcessId : params.selectionProcessId
			},
			requestHeaders : {
				Accept : 'application/json'
			},
			onSuccess : function(transport) {
				onSelectionProcessClosed(params, transport);
			},
			onFailure : function() {
				window.location.reload();
			}
		});
	}
}

function closeStage(params) {
	if (typeof (params.action) == 'undefined') {
		displayTransparentDiv('transparentDiv', 'loadingDiv');
		new Ajax.Updater('actionPopup', params.controller, {
			method : 'get',
			parameters : {
				stageId : params.stageId
			},
			onSuccess : function(transport) {
				displayElement('loadingDiv', 'none');
				centerPopup('actionPopup', 'transparentDiv');
			},
			onFailure : function() {
				window.location.reload();
			}
		});
	} else {
		displayLoadingPopupDiv('actionPopup', 'popupLoadingDiv');
		new Ajax.Request(params.controller, {
			method : 'get',
			parameters : {
				stageId : params.stageId,
				completed : params.completed,
				action : params.action
			},
			requestHeaders : {
				Accept : 'application/json'
			},
			onSuccess : function(transport) {
				onStageClosed(params, transport);
			},
			onFailure : function() {
				window.location.reload();
			}
		});
	}
}

function displayCandidateInfo(params) {
	displayTransparentDiv('transparentDiv', 'loadingDiv');
	new Ajax.Updater('actionPopup', params.controller, {
		method : 'get',
		parameters : {
			candidateId : params.candidateId
		},
		onSuccess : function(transport) {
			displayElement('loadingDiv', 'none');
			centerPopup('actionPopup', 'transparentDiv');
		}
	});
}

// global variables used in subscribeInternalCandidates.do controller.
var selectionProcesses = new Object();
function subscribeInternalCandidates(event, params) {
	if (typeof (params.action) == 'undefined') {
		if (params.referer == 'CURRICULUM') {
			displayTransparentDiv('transparentDiv', 'loadingDiv');
			new Ajax.Updater('actionPopup', params.controller, {
				method : 'get',
				evalScripts : true,
				onSuccess : function(transport) {
					displayElement('loadingDiv', 'none');
					centerPopup('actionPopup', 'transparentDiv');
				}
			});
		} else {
			if (validateCheckbox(document
					.getElementsByName(params.jobSeekerCheckboxName), 1, 1)) {
				displayTransparentDiv('transparentDiv', 'loadingDiv');
				new Ajax.Updater('actionPopup', params.controller, {
					method : 'post',
					parameters : $(params.formId).serialize(true),
					evalScripts : true,
					onSuccess : function(transport) {
						displayElement('loadingDiv', 'none');
						centerPopup('actionPopup', 'transparentDiv');
					}
				});
			} else {
				positionClick(event, 'selection-process-tooltip');
				displayBlock('selection-process-tooltip');			}
		}
	} else {
		if (validateOnSubscribeInternalCandidates()) {
			displayLoadingPopupDiv('actionPopup', 'popupLoadingDiv');
			new Ajax.Request(params.controller, {
				method : 'post',
				parameters : $('subscriptionForm').serialize(true),
				requestHeaders : {
					Accept : 'application/json'
				},
				onSuccess : function(transport) {
					onInternalCandidatesSubscribed(params, transport);
				}
			});
		}
	}
}

function validateOnSubscribeInternalCandidates() {
	var processId = $('selectionProcessId').options[$('selectionProcessId').selectedIndex].value;
	var processError = (processId == -1) ? true : false;

	$('processFieldCode').style.display = processError ? 'block' : 'none';
	$('processFieldDiv').className = processError ? $('processFieldDiv').className + ' errorregister'
			: $('processFieldDiv').className.replace('errorregister', '')

	return !processError;
}

function onRegisterProcessValidationSuccess(params) {
	$(params.formId).submit();
}

function onRegisterProcessValidationFailure(params, transport) {
	onFormValidationFailure(transport, 'process');
}

function registerTemplate(params) {
	if (typeof (params.action) == 'undefined') {
		displayTransparentDiv('transparentDiv', 'loadingDiv');
		new Ajax.Updater('actionPopup', params.controller, {
			method : 'get',
			parameters : {
				employerId : params.employerId
			},
			evalScripts : true,
			onSuccess : function(transport) {
				displayElement('loadingDiv', 'none');
				centerPopup('actionPopup', 'transparentDiv');
			}
		});
	} else {
		validateForm( {
			formId : 'templateForm',
			validationController : params.validationController,
			controller : params.controller,
			onSuccessCallback : onRegisterTemplateValidationSuccess,
			onFailureCallback : onRegisterTemplateValidationFailure
		});
	}
}

function onRegisterTemplateValidationSuccess(params) {
	displayLoadingPopupDiv('actionPopup', 'popupLoadingDiv');
	new Ajax.Request(params.controller, {
		method : 'post',
		parameters : $(params.formId).serialize(true),
		requestHeaders : {
			Accept : 'application/json'
		},
		onSuccess : function(transport) {
			onTemplateRegistered(params, transport);
		},
		onFailure : function(transport) {
			$('actionPopup').innerHTML = transport.responseText;
		}
	});
}

function onRegisterTemplateValidationFailure(params, transport) {
	onFormValidationFailure(transport, 'template');
}

function unsubscribeCandidate(params) {
	if (typeof (params.action) == 'undefined') {
		displayTransparentDiv('transparentDiv', 'loadingDiv');
		new Ajax.Updater('actionPopup', params.controller, {
			method : 'get',
			parameters : {
				candidateId : params.candidateId
			},
			onSuccess : function(transport) {
				displayElement('loadingDiv', 'none');
				centerPopup('actionPopup', 'transparentDiv');
			},
			onFailure : function() {
				window.location.reload();
			}
		});
	} else {
		displayLoadingPopupDiv('actionPopup', 'popupLoadingDiv');
		new Ajax.Request(params.controller, {
			method : 'post',
			parameters : $('candidateForm').serialize(true),
			requestHeaders : {
				Accept : 'application/json'
			},
			onSuccess : function(transport) {
				onCandidateUnsuscribed(params, transport);
			},
			onFailure : function() {
				window.location.reload();
			}
		});
	}
}

function subscribeExternalCandidate(params) {
	if (typeof (params.action) == 'undefined') {
		displayTransparentDiv('transparentDiv', 'loadingDiv');
		new Ajax.Updater('actionPopup', params.controller, {
			method : 'get',
			parameters : {
				selectionProcessId : params.selectionProcessId
			},
			onSuccess : function(transport) {
				displayElement('loadingDiv', 'none');
				centerPopup('actionPopup', 'transparentDiv');
			}
		});
	} else {
		validateForm( {
			formId : 'candidateForm',
			validationController : params.validationController,
			controller : params.controller,
			onSuccessCallback : onSubscribeExternalCandidateValidationSuccess,
			onFailureCallback : onSubscribeExternalCandidateValidationFailure
		});
	}
}

function onSubscribeExternalCandidateValidationSuccess(params) {
	displayLoadingPopupDiv('actionPopup', 'popupLoadingDiv');
	new Ajax.Request(params.controller, {
		method : 'post',
		parameters : $(params.formId).serialize(true),
		requestHeaders : {
			Accept : 'application/json'
		},
		onSuccess : function(transport) {
			onExternalCandidateSubscribed(params, transport);
		},
		onFailure : function(transport) {
			$('actionPopup').innerHTML = transport.responseText;
		}
	});
}

function onSubscribeExternalCandidateValidationFailure(params, transport) {
	onFormValidationFailure(transport, 'candidate');
}

function registerTask(params) {
	if (typeof (params.action) == 'undefined') {
		displayTransparentDiv('transparentDiv', 'loadingDiv');
		new Ajax.Updater('actionPopup', params.controller, {
			method : 'get',
			parameters : {
				candidateId : params.candidateId,
				stageId : params.stageId
			},
			onSuccess : function(transport) {
				displayElement('loadingDiv', 'none');
				centerPopup('actionPopup', 'transparentDiv');
			},
			onFailure : function() {
				window.location.reload();
			}
		});
	} else {
		validateForm( {
			formId : 'taskForm',
			validationController : params.validationController,
			controller : params.controller,
			onSuccessCallback : onRegisterTaskValidationSuccess,
			onFailureCallback : onRegisterTaskValidationFailure
		});
	}
}

function onRegisterTaskValidationSuccess(params) {
	displayLoadingPopupDiv('actionPopup', 'popupLoadingDiv');
	new Ajax.Request(params.controller, {
		method : 'post',
		parameters : $(params.formId).serialize(true),
		requestHeaders : {
			Accept : 'application/json'
		},
		onSuccess : function(transport) {
			onTaskRegistered(params, transport);
		},
		onFailure : function() {
			window.location.reload();
		}
	});
}

function onRegisterTaskValidationFailure(params, transport) {
	onFormValidationFailure(transport, 'task');
}

function displayProcessDetails(params) {
	if (params.selectionProcessId != -1) {
		var process = selectionProcesses[params.selectionProcessId];
		$('jobPositionSpan').innerHTML = process.jobPosition;
		$('vacanciesSpan').innerHTML = process.vacancies;
		$('candidatesSpan').innerHTML = process.candidates;
		$('expectedEndDateSpan').innerHTML = process.expectedEndDate;
		$('expectedSalarySpan').innerHTML = process.expectedSalary;

		var displayAllSelectionExceptionMessage = (process.selectedSubscribedJobSeekers == params.selectedVisibleJobSeekers);
		var displayPartialSelectionExceptionMessage = (process.selectedSubscribedJobSeekers > 0)
				&& (process.selectedSubscribedJobSeekers < params.selectedVisibleJobSeekers);
		var displayNoVisibleSelectionExceptionMessage = (params.selectedVisibleJobSeekers < params.selectedJobSeekers);
		var displaySubscribeInternalCandidateButton = (process.selectedSubscribedJobSeekers < params.selectedVisibleJobSeekers);
		var displaySubscriptionExceptionsMessages = displayAllSelectionExceptionMessage
				|| displayPartialSelectionExceptionMessage
				|| displayNoVisibleSelectionExceptionMessage;

		displayElement('subscribeInternalCandidateButton',
				displaySubscribeInternalCandidateButton ? 'inline' : 'none');
		displayElement('allSelectionExceptionMessageSpan',
				displayAllSelectionExceptionMessage ? 'block' : 'none');
		displayElement('partialSelectionExceptionMessageSpan',
				displayPartialSelectionExceptionMessage ? 'block' : 'none');
		displayElement('noVisibleSelectionExceptionMessageSmall',
				displayNoVisibleSelectionExceptionMessage ? 'block' : 'none');
		displayElement('subscriptionExceptionsMessagesSpan',
				displaySubscriptionExceptionsMessages ? 'block' : 'none');
	}
}

function listTasks(params) {
	displayTransparentDiv('transparentDiv', 'loadingDiv');
	new Ajax.Updater('actionPopup', params.controller, {
		method : 'get',
		parameters : {
			stageId : params.stageId
		},
		onSuccess : function(transport) {
			displayElement('loadingDiv', 'none');
			centerPopup('actionPopup', 'transparentDiv');
		}
	});
}

function listInternalCandidateSelectionProcesses(params) {
	displayTransparentDiv('transparentDiv', 'loadingDiv');
	new Ajax.Updater('actionPopup', params.controller, {
		method : 'get',
		parameters : {
			jobSeekerId : params.jobSeekerId,
			closed : params.closed
		},
		onSuccess : function(transport) {
			displayElement('loadingDiv', 'none');
			centerPopup('actionPopup', 'transparentDiv');
		}
	});
}

function reorderCandidates(params) {
	new Ajax.Request(params.controller, {
		method : 'get',
		parameters : {
			candidateId : params.candidateId,
			targetCandidateId : params.targetCandidateId
		},
		requestHeaders : {
			Accept : 'application/json'
		},
		onSuccess : function(transport) {
			onCandidatesReordered(params, transport);
		},
		onFailure : function() {
			window.location.reload();
		}
	});
}

function rateCandidate(params) {
	new Ajax.Request(params.controller, {
		method : 'get',
		parameters : {
			candidateId : params.candidateId,
			rating : params.rating
		},
		requestHeaders : {
			Accept : 'application/json'
		},
		onSuccess : function(transport) {
			onCandidateRated(params, transport);
		},
		onFailure : function() {
			window.location.reload();
		}
	});
}

function addTemplateStage() {
	var stageName = $('stageNameInput').value.strip();

	if (validateOnAddTemplateStage()) {
		var stagesTable = $('stagesTable');
		var stageTypeName = $('stageTypeSelect').options[$('stageTypeSelect').selectedIndex].text;
		var stageTypeId = $('stageTypeSelect').options[$('stageTypeSelect').selectedIndex].value;
		var stageOrder = parseInt($('stagesSize').value) + 1;
		var stageTemplateRow = $('stageRow');

		// set up new stage.
		var newStageRow = stageTemplateRow.cloneNode(true);
		newStageRow.id = newStageRow.id + stageOrder;
		stagesTable.tBodies[0].appendChild(newStageRow);
		$A(newStageRow.childNodes).each(
			function(childNode) {
				childNode.id = (childNode.id) ? childNode.id.replace(/\[stageOrder\]/g, stageOrder) : '';
				childNode.innerHTML = (childNode.innerHTML) ? childNode.innerHTML.replace(/\[stageOrder\]/g, stageOrder) : '';
			}
		);
		setUpTemplateStage(stageName, stageTypeName, stageTypeId, stageOrder);	
		newStageRow.style.display = 'block';	
		displayElement($('stageRemoveA' + stageOrder).id, 'inline');

		// update stages size hidden.
		$('stagesSize').value = stageOrder;

		// update new stage order.
		$('newStageOrder').innerHTML = stageOrder + 1;

		// disable remove link from previous stage if exists.
		if (stageOrder > 1) {
			displayElement($('stageRemoveA' + (stageOrder - 1)).id, 'none');
		}

		// display table stages.
		displayElement(stagesTable.id, 'block');

		// reset stage name input.
		$('stageNameInput').value = '';

		// reset stage type input.
		$('stageTypeSelect').selectedIndex = 0;

		// disable stages field error if exists.
		displayElement('stagesTemplateFieldCode', 'none');
		$('nameStageFieldLabel').className = $('nameStageFieldLabel').className
				.replace('errorregister', '');
		$('typeStageFieldLabel').className = $('typeStageFieldLabel').className
				.replace('errorregister', '');
	}
}

function validateOnAddTemplateStage() {
	var stageName = $('stageNameInput').value.strip();
	var stageTypeId = $('stageTypeSelect').options[$('stageTypeSelect').selectedIndex].value;
	var minLengthStageNameError = (stageName.length == 0) ? true : false;
	var maxLengthStageNameError = (stageName.length > 100) ? true : false;
	var stageNameError = minLengthStageNameError || maxLengthStageNameError;
	var stageTypeError = (stageTypeId == -1) ? true : false;

	$('minLengthNameStageFieldCode').style.display = minLengthStageNameError ? 'block'
			: 'none';
	$('maxLengthNameStageFieldCode').style.display = maxLengthStageNameError ? 'block'
			: 'none';
	$('nameStageFieldLabel').className = (minLengthStageNameError || maxLengthStageNameError) ? $('nameStageFieldLabel').className + ' errorregister'
			: $('nameStageFieldLabel').className.replace('errorregister', '');
	$('typeStageFieldCode').style.display = stageTypeError ? 'block' : 'none';
	$('typeStageFieldLabel').className = stageTypeError ? $('typeStageFieldLabel').className + ' errorregister'
			: $('typeStageFieldLabel').className.replace('errorregister', '');

	return (!stageNameError && !stageTypeError);
}

function reorderTemplateStage(stageOrder, targetStageOrder) {
	var stagesTable = $('stagesTable');

	// validate reorder process for first and last stages.
	if ((targetStageOrder > 0)
			&& (targetStageOrder <= stagesTable.rows.length - 1)) {
		var row = stagesTable.rows[stageOrder];
		var targetRow = stagesTable.rows[targetStageOrder];

		// retrieve stage info.
		var stageRowInputValue = getTemplateStageInputValue(stageOrder);
		var targetStageRowInputValue = getTemplateStageInputValue(targetStageOrder);

		// switch current and target stages info.
		setUpTemplateStage(stageRowInputValue.name,
				stageRowInputValue.typeName, stageRowInputValue.typeId,
				targetStageOrder);
		setUpTemplateStage(targetStageRowInputValue.name,
				targetStageRowInputValue.typeName,
				targetStageRowInputValue.typeId, stageOrder);
	}

}

function removeTemplateStage(stageOrder) {
	var stagesTable = $('stagesTable');
	var stageRow = stagesTable.rows[stageOrder];

	// remove stage from stages table.
	stagesTable.tBodies[0].removeChild(stageRow);
	// update stages size hidden.
	$('stagesSize').value = parseInt($('stagesSize').value) - 1;
	// enable remove link from previous stage if exists; else disable stages
	// table.
	if (stageOrder > 1) {
		displayElement($('stageRemoveA' + (stageOrder - 1)).id, 'inline');
	} else {
		displayElement(stagesTable.id, 'none');
	}
	// update new stage order.
	$('newStageOrder').innerHTML = stageOrder;
}

function setUpTemplateStage(stageName, stageTypeName, stageTypeId, stageOrder) {
	$('stageOrderColumn' + stageOrder).innerHTML = stageOrder + ')';
	$('stageNameColumn' + stageOrder).innerHTML = stageName;
	$('stageTypeNameColumn' + stageOrder).innerHTML = stageTypeName;
	$('stageValueInput' + stageOrder).name = 'stages';
	setUpTemplateStageInputValue(stageName, stageTypeName, stageTypeId,
			stageOrder);
}

function setUpTemplateStageInputValue(stageName, stageTypeName, stageTypeId,
		stageOrder) {
	$('stageValueInput' + stageOrder).value = stageTypeId + ';' + stageName
			+ ';' + stageOrder + ';' + stageTypeName;
}

function getTemplateStageInputValue(stageOrder) {
	var input = $('stageValueInput' + stageOrder);

	return {
		typeId : input.value.split(';')[0],
		name : input.value.split(';')[1],
		order : input.value.split(';')[2],
		typeName : input.value.split(';')[3]
	}
}

function displayTaskDetails(taskId) {
	$('task' + taskId + 'Span').style.display = ($('task' + taskId + 'Span').style.display == 'none') ? 'block'
			: 'none';
}

