var optionRelations = new Array();
var requiredOptions = new Array();
var checkBoxesPresent = new Array();
var allowedRelations = new Array();
var singleRelations = new Array();
var optionLabels = new Array();
var checkBoxes = new Array();
var hiddenTextFieldRelations = new Array();

function checkOptionRelations(option_id) {
	element1 = document.getElementById(option_id);
	if(element1.type == "select-one") {
		
    	if(hiddenTextFieldRelations[option_id]) {
            if(hiddenTextFieldRelations[option_id]["choice_"+element1.options[element1.selectedIndex].value]) {
                document.getElementById("option_row_"+hiddenTextFieldRelations[option_id]["choice_"+element1.options[element1.selectedIndex].value]).style.display = 'table-row';
            }
        }
   		
    	if(requiredOptions[option_id] == "required") {
            if(element1.selectedIndex == 0) {
            	displayRequiredMessage(option_id);
                //alert('Feltet "'+optionLabels[option_id]+'" bedes udfyldt');
            	return false;
            }
            else {
            	return true;
            }
        }
		
		value1 = element1.options[element1.selectedIndex].value;
		if(singleRelations[option_id]) {
			if(singleRelations[option_id][value1]) {
				//alert(singleRelations[option_id][value1]["option_id"]+"   "+singleRelations[option_id][value1]["value_id"]);
				element2 = document.getElementById(singleRelations[option_id][value1]["option_id"]);
				for(i=0;i<=element2.options.length;i++) {
					//alert(element2.options[i].value+"   "+singleRelations[option_id][value1]["value_id"]);
					if(element2.options[i].value == singleRelations[option_id][value1]["value_id"]) {
						element2.options[i].selected = true;
						return;
					}
				}
			}
		}
	}
	
	if(element1.type == "text" || element1.type == "textarea") {
		if(requiredOptions[option_id] == "required") {
			if(element1.value == "") {
				displayRequiredMessage2(option_id);
                //alert('Feltet "'+optionLabels[option_id]+'" bedes udfyldt');
				return false;
			}
			else {
				return true;
			}
		}
		else {
			return true;
		}
	}
	
	if(element1.type == "checkbox") {
		if(element1.checked == false) {
			return;
		}
		value1 = element1.name.substr(element1.name.lastIndexOf("_")+1);
		value1 = value1.substr(0,value1.length-1);
	}
	else {
		value1 = element1.value;
	}
	
	if(option_id.substr(0,8) == "session_" || option_id == "allsessions") {
		checkList = optionRelations["sessions"];
		id1 = "sessions";
	}
	else if(element1.type == "checkbox") {
		id1 = element1.id.substr(0,element1.id.lastIndexOf("_"));
		checkList = optionRelations[id1];
	}
	else {
		id1 = option_id;
		checkList = optionRelations[id1];
	}

	if(checkList) {
		for(i=0;i<checkList.length;i++) {
			if(checkBoxes[checkList[i]]) {
				for(j=0;j<checkBoxes[checkList[i]].length;j++) {
					value2 = checkList[i]+"_"+checkBoxes[checkList[i]][j];
					try {
                        if(document.getElementById(value2).checked) {
                            if(allowedRelations[id1][value1][checkList[i]][value2]!=true) {
                                displayErrorMessage(id1,checkList[i]);
    							return false;
    						}
    					}
					}
                    catch(err) {
                        displayErrorMessage(id1,checkList[i]);
    					return false;
                    }
				}
			}
			else {
				try {
                    value2 = document.getElementById(checkList[i]).value;
				    if(allowedRelations[id1][value1][checkList[i]][value2]!=true) {
    					displayErrorMessage(id1,checkList[i]);
    					return false;
    				}
				}
                catch(err) {
   					displayErrorMessage(id1,checkList[i]);
   					return false;
                }
			}
		}
		return true;
	}
	else {
		return true;
	}
}

function addElementOR(name1,name2) {
	if(!optionRelations[name1]) {
		optionRelations[name1] = new Array(name2);
	}
	else {
		optionRelations[name1][optionRelations[name1].length] = name2;
	}
	
	if(!optionRelations[name2]) {
		optionRelations[name2] = new Array(name1);
	}
	else {
		optionRelations[name2][optionRelations[name2].length] = name1;
	}
}

function addAllowedRelation(option1,choice1,option2,choice2) {
	if(!allowedRelations[option1]) {
		allowedRelations[option1] = new Array();
	}
	if(!allowedRelations[option1][choice1]) {
		allowedRelations[option1][choice1] = new Array();
	}
	if(!allowedRelations[option1][choice1][option2]) {
		allowedRelations[option1][choice1][option2] = new Array();
	}
	allowedRelations[option1][choice1][option2][choice2] = true;

	if(!allowedRelations[option2]) {
		allowedRelations[option2] = new Array();
	}
	if(!allowedRelations[option2][choice2]) {
		allowedRelations[option2][choice2] = new Array();
	}
	if(!allowedRelations[option2][choice2][option1]) {
		allowedRelations[option2][choice2][option1] = new Array();
	}
	allowedRelations[option2][choice2][option1][choice1] = true;
}

function addSingleRelation(option1,choice1,option2,choice2) {
	if(!singleRelations[option1]) {
		singleRelations[option1] = new Array();
	}
	if(!singleRelations[option1][choice1]) {
		singleRelations[option1][choice1] = new Array();
	}
	singleRelations[option1][choice1]["option_id"] = option2;
	singleRelations[option1][choice1]["value_id"] = choice2;
}

function cafeteriaCol(day_id,option_id,checkbox_id) {
	if(checkbox_id == option_id + "_basecamp_" + day_id) {
		if(0) { //document.getElementById(checkbox_id).checked == true) {
			document.getElementById(option_id + "_morning_" + day_id).checked = false;
			document.getElementById(option_id + "_noon_" + day_id).checked = false;
			document.getElementById(option_id + "_evening_" + day_id).checked = false;
		}
	}
	else {
		if(document.getElementById(checkbox_id).checked == true) {
			//document.getElementById(option_id + "_basecamp_" + day_id).checked = false;
		}
	}
}

function cafeteriaRelations(day_id,checkbox_id,basecamp,errormsg) {
	if(basecamp) {
		track_el = document.getElementById("tracks");
		track_id = track_el.options[track_el.selectedIndex].value;
		
		if(document.getElementById(checkbox_id).checked == true && track_id != "BC") {
			if(errormsg) {
				displayNotOnBasecampError();
			}
			document.getElementById(checkbox_id).checked = false;
		}
	}
	
	if(document.getElementById("allsessions").checked == true) {
		return true;
	}
	
	switch(day_id) {
		case "sat1":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_1").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
		case "sun":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_2").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
		case "mon":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_3").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
		case "tue":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_4").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
		case "wed":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_5").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
		case "thu":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_6").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
		case "fri":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_7").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
		case "sat2":
			if(document.getElementById(checkbox_id).checked == true && document.getElementById("session_8").checked == false) {
				if(errormsg) {
					displayWrongDayError();
				}
				document.getElementById(checkbox_id).checked = false;
			}
			break;
	}
}