/**
* direction possibility rater array
**/
aDir = new Array(0, 0, 0);
var nAge = 0;
var bTendToExpert = false;


/**
* check certain input field and change formular/dates
**/
function checkInput(_oElem) {
	if(typeof(_oElem) == 'undefined') {
		initAll();
		return false;
	} else if(_oElem.options[_oElem.selectedIndex].value == '-') {
		alert('Bitte erst alle Felder ausfüllen!');
		return false;
	} else {
		var nValue = _oElem.options[_oElem.selectedIndex].value;
		switch(_oElem.name) {
			case 'input_age':
				if(nValue <= 10) changeDir('b', 30);
				else if(nValue <= 14) changeDir('a', 30);
				else changeDir('e', 30);
				nAge = nValue;
				break;
			case 'input_visit':
				if(nValue >= 3) changeDir('e', 10);
				else if(nValue >= 1) changeDir('a', 10);
				else changeDir('b', 10);
				break;
			case 'input_10':
				if(nValue == 3) changeDir('a', 15);
				else changeDir('b', 15);
				break;
			case 'input_chef':
				if(nValue <= 1) changeDir('b', 20);
				else if(nValue == 2) changeDir('a', 10);
				else changeDir('a', 15);
				break;
			case 'input_www':
				if(nValue == 0) changeDir('b', 20);
				else if(nValue <= 2) changeDir('b', 15);
				else changeDir('a', 15);
				break;
			case 'input_hobby':
				switch(nValue) {
					case 0:	changeDir('b', 15);	break;
					case 1:	changeDir('b', 10);	break;
					case 2:	changeDir('a', 10);	break;
					case 3:	changeDir('a', 15);	break;
				}
				break;
			case 'input_tech':
				if(nValue <= 1) changeDir('a', 15);
				else if(nValue == 2) changeDir('e', 10);
				else if(nValue == 3) changeDir('e', 15);
				break;
			case 'input_pc':
				if(nValue <= 1) {
					changeDir('a', 15);
					bTendToExpert = false;
				} else {
					if(nValue == 2) changeDir('e', 10);
					else if(nValue == 3) changeDir('e', 15);
					else if(nValue == 4) changeDir('e', 20);
					bTendToExpert = true;
				}
				break;
		}
		return true;
	}
}

/**
* age change
**/
function ageChange(_oElem) {
	var nValue = _oElem.options[_oElem.selectedIndex].value;
	changeDom('div_young', 'style.display', 'none');
	changeDom('div_middle', 'style.display', 'none');
	changeDom('div_old', 'style.display', 'none');
	changeDom('div_result', 'style.display', 'none');
	if(nValue >= 13 && nValue <= 17) changeDom('div_old', 'style.display', 'block');
	else if(nValue > 10) changeDom('div_middle', 'style.display', 'block');
	else if(nValue >= 8) changeDom('div_young', 'style.display', 'block');
}

/**
* init function
**/
function initAll() {
	aDir = new Array(0, 0, 0);
	bTendToExpert = false;
}

/**
* direction possibility rater
**/
function changeDir(_sName, _nPossible) {
	var nPos = 0;
	switch(_sName) {
		case 'b':	nPos = 0;	break;
		case 'a':	nPos = 1;	break;
		case 'e':	nPos = 2;	break;
		default:	return false;
	}
	aDir[nPos] += _nPossible;
}

/**
* calculate and present result
**/
function showResult() {
	initAll();
	checkInput(getDom('input_age'));
	var bSuccess = true;
	if(nAge >= 13 && nAge <= 17) {	//old
		bSuccess = checkInput(getDom('input_tech'));
		bSuccess = checkInput(getDom('input_pc'));
	} else if(nAge > 10) {	//middle
		bSuccess = checkInput(getDom('input_www'));
		bSuccess = checkInput(getDom('input_hobby'));
	} else if(nAge >= 8) {	//young
		bSuccess = checkInput(getDom('input_10'));
		bSuccess = checkInput(getDom('input_chef'));
	}
	checkInput(getDom('input_visit'));
	if(bSuccess) {
		var sDir = getWinner();
		changeDom('suggestion', 'innerHTML', (sDir + ' zum Termin ' + getDate(sDir, bTendToExpert)));
		changeDom('div_result', 'style.display', 'block');
	}
}

/**
* check array winner function
**/
function getWinner() {
	var nPos = 0;
	for(var i = 1; i < aDir.length; i++) if(aDir[i] > aDir[i-1]) nPos = i;
	switch(nPos) {
		case 0:	return 'Basic';	break;
		case 1:	return 'Advanced';	break;
		case 2:	return 'Expert';	break;
	}
}

/**
* get date for a specific direction
**/
function getDate(_sDir, _bTendToExpert) {
	switch(_sDir) {
		case 'Basic':
			if(nAge <= 10) return 'C1';
			else if(nAge > 14) return 'C2 oder C3';
			else return 'C1, C2 oder C3';
			break;
		case 'Advanced':
			if(nAge <= 10) return 'C1';
			else if(nAge <= 12) return 'C1, C2 oder C3';
			else if(nAge > 16) return 'C4';
			else if(nAge > 14) return 'C2, C3 oder C4';
			else return 'C1, C2, C3 oder C4';
			break;
		case 'Expert':
			if(nAge <= 10) return 'C1';
			else if(nAge <= 12) return 'C1, C2 oder C3';
			else if(nAge > 16) return 'C4';
			else if(nAge > 14) return 'C2, C3 oder C4';
			else return 'C1, C2, C3 oder C4';
			break;
	}
}

/**
* whenever making a DOM call, use this function in order to prevent basic js errors
**/
function changeDom(_sId, _sOption, _sValue) {
	if(document.getElementById) {
		if(document.getElementById(_sId)) {
			if(typeof(eval('document.getElementById(\'' + _sId + '\').' + _sOption)) != 'undefined') {
				eval('document.getElementById(\'' + _sId + '\').' + _sOption + ' = \'' + _sValue + '\'');
			}
		}
	}
}

/**
* whenever calling a DOM, use this function in order to prevent basic js errors
**/
function getDom(_sId) {
	if(document.getElementById) {
		var oElem = document.getElementById(_sId);
		if(oElem) return oElem;
	}
}

