var qListString = new Array ("div_DDI_AOS", "div_DDI_AGE", "div_DDI_GRADYEAR", "div_DDI_EDUCATION_01", "div_DDI_START_PERIOD_01", "div_COUNTRY_01", "div_USCITIZEN_01", "div_DDI_MILITARYBRANCH_01", "div_ZIP_01");

function validateForm(form)
{
    noPopup=true;
    return true;
}

function initF() {  
  formSubmitted=false;
  var form = window.document.form1;
  initializeMilitaryAffiliate(form);
  showAosFields();
  showSubAosFields();
  initializeDDIGroup();
  resetFields();
  initFirstPage();
  attachShowHideEvents(form);
  initializeParams();
  updateProgressBar();
  hideCountryBasedOnCitizen(window.document.form1.USCITIZEN_01);
  
  if (ConfigChecker.isButtonTogglingEnabled()) {
	  UIUtil.QualifyingQuestionsButtonToggler.init();
  }
  
  if (ConfigChecker.isToolTipEnabled()) {
	  UIUtil.DDIAOSToolTip.init();
  }
}

function initializeDDIGroup() {
	if(window.qListGroups && window.document.form1.DDI_SUB_AOS_01_DISPLAY) {
		var subAosDisplay = getFieldValueTF(window.document.form1.DDI_SUB_AOS_01_DISPLAY);
		if(subAosDisplay != "HIDE") {
			for(i = 0; i < window.qListGroups.length; i++) {
				var qListStringGroup = window.qListGroups[i];
				for(j = 0; j < qListStringGroup.length; j++) {
					if(qListStringGroup[j] == 'div_DDI_AOS') {
						qListStringGroup[qListStringGroup.length] = "div_DDI_SUB_AOS";
						window.qListGroups[i] = qListStringGroup;
						return;
					}
				}
			}
		}
	}
}

function showAosFields() {
	var formRef = window.document.form1;
	if(formRef.DDI_AOS_01_DISPLAY) {
		var aosDisplayType = getFieldValueTF(formRef.DDI_AOS_01_DISPLAY);
		if(aosDisplayType == "RADIO") {
			show("div_DDI_AOS_RADIO");
		} else if(aosDisplayType == "DROPDOWN") {
			show("div_DDI_AOS_DROPDOWN");
		} else {
			show("div_DDI_AOS_CHECKBOX");
		}
	} else {
		show("div_DDI_AOS_CHECKBOX");
	}
}

function showSubAosFields() {
	var formRef = window.document.form1;
	if(formRef.DDI_SUB_AOS_01_DISPLAY) {
		var subAosDisplay = getFieldValueTF(formRef.DDI_SUB_AOS_01_DISPLAY);
		if(subAosDisplay == "RADIO") {
			show("div_DDI_SUB_AOS_RADIO");
		} else if(subAosDisplay == "DROPDOWN") {
			show("div_DDI_SUB_AOS_DROPDOWN");
		} else if(subAosDisplay == "CHECKBOX"){
			show("div_DDI_SUB_AOS_CHECKBOX");
		} else {
			hide("div_DDI_SUB_AOS");
		}
	}
	
	for(i=0;i<errors.length;i++) {
		if(errors[i] == 'DDI_SUB_AOS_01') {
			updateSubAos();
		}
	}
}

function attachShowHideEvents(form) {
    form.DDI_MILITARYAFFILIATE_01[0].onclick = function() {
        show("div_DDI_MILITARYBRANCH_01_options");
        resetForwardHistory();
    }
    
    form.DDI_MILITARYAFFILIATE_01[1].onclick = function() {
        hide("div_DDI_MILITARYBRANCH_01_options");
        if(window.qListGroups[curQ].length == 1){
            displayNextQ(window.document.form1.DDI_MILITARYAFFILIATE_01);
        }
    }
}

function displayNextQ(field){    
    showNextQ(field);
    
    if (ConfigChecker.isButtonTogglingEnabled()) {
        UIUtil.QualifyingQuestionsButtonToggler.doToggle();
    }
 
    if(formSubmitted!=true) {
        updateProgressBar();
        //show tabs if needed
        var tabs = document.getElementById('progressTabs');
        if (tabs !== null && qListGroups[1].length > 2 && curQ == 1) {
            tabs.style.display = 'block';
        }
    }
}

function validateGroupElement(groupElement) {
    if(groupElement == "div_DDI_MILITARYBRANCH_01"){
        var field_DDI_MILITARYAFFILIATE_01 = getFormField("DDI_MILITARYAFFILIATE_01");
        if(field_DDI_MILITARYAFFILIATE_01 && !validate(field_DDI_MILITARYAFFILIATE_01)){
            return false;
        }
        var isMilitaryAffiliate = getFieldValueRB(field_DDI_MILITARYAFFILIATE_01) == "Yes";
        if(isMilitaryAffiliate==true && !validateGroupElementFields(groupElement)){
            return false;
        }
    } else if(!validateGroupElementFields(groupElement)){
        return false;
    }
    return true;
}


function validateGroupElementFields(groupElement){
	var fieldsInDiv = getFieldsWithinDiv(groupElement);
    if(fieldsInDiv && fieldsInDiv.length > 0) {
        var field = getFormField(fieldsInDiv[0].name);
        if(field && !validate(field)) {
          return false;
         }
    } else if(groupElement == 'div_DDI_SUB_AOS') {
    	if (formSubmitted == true) {
            return true;
        }
    	return validate_DDI_SUB_AOS_01();
	}
    return true;
}

function displayPreviousQ(){
    showPreviousQ();
    
    if (ConfigChecker.isButtonTogglingEnabled()) {
        UIUtil.QualifyingQuestionsButtonToggler.doToggle();
    }
    
    updateProgressBar();
}

//similar to initParams in degreesInfo.js except that it does not initialize params when
//using qlistgroups or qListString
function initializeParams() {
    var relation = new Array();
    relation['web design'] = "graphic design";// if web design will be in the url we will use graphic design
    relation['arts'] = "graphic design";
    var urlParamMap = new Array();
    urlParamMap['_AOS'] = "DDI_AOS_01";
    
    var q = window.location.search;
    
    //do not initialize params when using qlistgroups or qListString
    if (!window.qListGroups && !window.qListString) {
    	if(q != null && q.length > 1) {
            q = q.substring(1, q.length);
            var keyValuePairs = q.split("&");
            for(var index=0; index < keyValuePairs.length; index++) {
                var delim = keyValuePairs[index].indexOf("=");
                if(delim > 0 && delim < (keyValuePairs[index].length - 1)) {
                    var name = keyValuePairs[index].substring(0,delim);
                    var value = keyValuePairs[index].substring(++delim,keyValuePairs[index].length);
                    value = replaceSpecialSymbols(value);
                    if (relation[value]) {
                    	value = relation[value];
                    }
                    if (urlParamMap[name]) {
                    	name = urlParamMap[name];
                    }
                    var field = window.document.getElementsByName(name);
                    if(field != null && field.length > 0)
                        initField(field, value);
                }
            }
        }
    }
}

function updateSubAos() {
	var aosMappingField = document.getElementById('AOS_MAPPING');
	var aosFieldValue = getAosFieldValue();
	var subAosHtml = "";
	var containerDiv = "";
	var oldDiv = "";
	var newdiv = document.createElement("div");
	if(aosMappingField) {
		var aosMapping = getFieldValueTF(aosMappingField);
		if(aosMapping) {
			if(window.document.form1.DDI_SUB_AOS_01_DISPLAY) {
				var subAosDisplayType = getFieldValueTF(window.document.form1.DDI_SUB_AOS_01_DISPLAY);
				if(subAosDisplayType == "RADIO") {
					subAosHtml = updateSubAosRadiobox(aosFieldValue, aosMapping);
					containerDiv = document.getElementById("div_DDI_SUB_AOS_RADIO");
					oldDiv = document.getElementById("div_DDI_SUB_AOS_RADIO_innerdiv");
					newdiv.id = "div_DDI_SUB_AOS_RADIO_innerdiv";
				} else if(subAosDisplayType == "DROPDOWN") {
					subAosHtml = updateSubAosDropdown(aosFieldValue, aosMapping);
					containerDiv = document.getElementById("div_DDI_SUB_AOS_DROPDOWN");
					oldDiv = document.getElementById("div_DDI_SUB_AOS_DROPDOWN_innerdiv");
					newdiv.id = "div_DDI_SUB_AOS_DROPDOWN_innerdiv";
				} else if(subAosDisplayType == "CHECKBOX"){
					subAosHtml = updateSubAosCheckbox(aosFieldValue, aosMapping);
					containerDiv = document.getElementById("div_DDI_SUB_AOS_CHECKBOX");
					oldDiv = document.getElementById("div_DDI_SUB_AOS_CHECKBOX_innerdiv");
					newdiv.id = "div_DDI_SUB_AOS_CHECKBOX_innerdiv";
				}
			}
		}
	}
	if(subAosHtml != null) {
		if(subAosHtml == "") {
			hide("div_DDI_SUB_AOS_title");
		} else {
			show("div_DDI_SUB_AOS_title");
		}
		if(containerDiv != null && containerDiv != "") {
			if(oldDiv) {
				containerDiv.removeChild(oldDiv);
			}
			if(subAosHtml != "") {
				newdiv.innerHTML = subAosHtml;
				containerDiv.appendChild(newdiv);
			}
		}
	}
}

function updateSubAosDropdown(aosFieldValues, aosMappingValues) {
    var currentSelectedValues = '';

    if (window.document.form1.DDI_SUB_AOS_01_DROPDOWN) {
        collectSubAosValuesDropdown();
        currentSelectedValues = getFieldValue(window.document.form1.DDI_SUB_AOS_01_DROPDOWN);
    }

    var isOptionAdded = false;
    var subAosHtml = '<input type="hidden" name="DDI_SUB_AOS_01_DROPDOWN" value="">';

    var aosMappings = aosMappingValues.split(',');

    for (var i = 0; i < aosMappings.length; i++) {
        var aosEntry = aosMappings[i].split('=');
        var aosValue = aosEntry[0];
        var subAosValues = aosEntry[1].split('|');
        var subAosFieldName = 'DDI_SUB_AOS_01_DROPDOWN_' + aosValue.replace(/ /g, '_'); 
        var subAosField = document.getElementsByName(subAosFieldName);

        if (subAosField && (subAosField.length > 0)) {
            if (currentSelectedValues != '') {
                currentSelectedValues += ',';
            }

            currentSelectedValues += getFieldValueLB(subAosField);
        }       

        if (aosFieldValues.indexOf(aosValue) > -1) {
            subAosHtml += '<div class="container_question"><label>' + getAosLabel(aosValue) + ' <span class="label_note">(select one)</span></label>';
            subAosHtml += '<div id="div_' + subAosFieldName + '" class="container_input input_select"><select name="' + subAosFieldName + '" id="' + subAosFieldName + '">';

            var selectedFlag = (currentSelectedValues && (currentSelectedValues == '')) ? 'selected' : '';
            subAosHtml += '<option value="" ' + selectedFlag + '>Select One</option>';          

            for (var j = 0; j < subAosValues.length; j++) {
                var subAosValue = subAosValues[j].split(':');

                selectedFlag = (currentSelectedValues && (currentSelectedValues.indexOf(subAosValue[1]) > -1)) ? 'selected' : '';
                subAosHtml += '<option value="' + subAosValue[1] + '" ' + selectedFlag + '>' + subAosValue[0] + '</option>';

                isOptionAdded = true;
            }

            subAosHtml += '</select></div></div>'
        }
    }

    return isOptionAdded ? subAosHtml : '';
}

function updateSubAosCheckbox(aosFieldValues, aosMappingValues) {
	var currentSelectedValues = "";
	
	if (window.document.form1.DDI_SUB_AOS_01) {
		collectSubAosValuesCheckbox();
		currentSelectedValues = getFieldValueCBWithSeparator(window.document.form1.DDI_SUB_AOS_01);
	}
	
	var isOptionAdded = false;
	var subAosHtml = "<input type='hidden' name='DDI_SUB_AOS_01' value=''>" + 
		"<span class='note'>(check at least one box)</span><br/><br/>";
	
	var aosMappings = aosMappingValues.split(",");
	
	for (var i = 0; i < aosMappings.length; i++) {
		var aosEntry = aosMappings[i].split("=");
		var aosValue = aosEntry[0];
		var subAosValues = aosEntry[1].split("|");
		var subAosFieldName = "DDI_SUB_AOS_01_" + aosValue.replace(/ /g, "_");
		var subAosField = document.getElementsByName(subAosFieldName);
		
		if (subAosField && (subAosField.length > 0)) {
			if (currentSelectedValues != "") {
				currentSelectedValues += ",";
			}
			
			currentSelectedValues += getFieldValueCBWithSeparator(subAosField);
		}		
				
		if (aosFieldValues.indexOf(aosValue) > -1) {
			subAosHtml += "<span class='subaos-field'>&raquo; " + getAosLabel(aosValue) + "</span>";
			subAosHtml += "<table width='100%' border='0' cellspacing='0' cellpadding='0' class='checkable' valign='top'>";	

			var optionCount = 0;			

			for (var j = 0; j < subAosValues.length; j++) {
				var subAosValue = subAosValues[j].split(":");
	
				if ((optionCount % 2) == 0) {
					subAosHtml += "<tr>";
				}				
				
				subAosHtml += "<td width='50%' id='" + subAosValue[1].replace(/ /g, "_") + "'>";

				selectedFlag = (currentSelectedValues && (currentSelectedValues.indexOf(subAosValue[1]) > -1)) ? "checked" : "";
				subAosHtml += "<input type='checkbox' name='" + subAosFieldName + "' value='" + subAosValue[1] + "' id='check_" + i + "_" + j + "_0" + optionCount + "' " + selectedFlag + ">";
				subAosHtml += "<label for='check_" + i + "_" + j + "_0" + optionCount + "'>" + subAosValue[0] + "</label></td>";

				if ((++optionCount % 2) == 0) {
					subAosHtml += "</tr>";
				}
				
				isOptionAdded = true;
			}
				
			subAosHtml += "</table>";
		}
	}

	return isOptionAdded ? subAosHtml : "";
}

function updateSubAosRadiobox(aosFieldValue, aosMappingValue) {
	var currentSelectedValue = "";
	if(window.document.form1.DDI_SUB_AOS_01_RADIO) {
		collectSubAosValuesRadio();
		currentSelectedValue = getFieldValue(window.document.form1.DDI_SUB_AOS_01_RADIO);
	}
	var subAosHtml = "<span class=\"note\">(check one box)</span><br /><br />";
	subAosHtml += "<input type=\"hidden\" name=\"DDI_SUB_AOS_01_RADIO\" value=\"\">";
	var isOptionAdded = false;
	var aosMappingArray = aosMappingValue.split(",");
	for(var i = 0; i < aosMappingArray.length; i++) {
		var aosEntry = aosMappingArray[i].split("=");
		var aosName = aosEntry[0];
		var subAos = aosEntry[1].split("|");
		var subAosField = document.getElementsByName("DDI_SUB_AOS_01_RADIO_" + aosName.replace(/ /g,"_"));
		if(subAosField && subAosField.length > 0) {
			if(currentSelectedValue != "") {
				currentSelectedValue += ",";
			}
			currentSelectedValue += getFieldValueRB(subAosField);
		}
		if(aosFieldValue.indexOf(aosName) >= 0) {
			var totalOptionsAdded = 0;
			subAosHtml += "<span class=\"subaos-field\">&raquo; " + getAosLabel(aosName) + "</span>";
			subAosHtml += "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"checktable\" valign=\"top\">";
			for(var j = 0; j < subAos.length; j++) {
				var subAosValue = subAos[j].split(":");
				if((totalOptionsAdded % 2) == 0) {
					subAosHtml += "<tr>";
				}
				subAosHtml += "<td width=\"50%\" id=\"" + subAosValue[1].replace(/ /g,"_") + "\">";
				if(currentSelectedValue && currentSelectedValue.indexOf(subAosValue[1]) > -1) {
					subAosHtml += "<input type=\"radio\" name=\"DDI_SUB_AOS_01_RADIO_" + aosName.replace(/ /g,"_") + "\" value=\"" + subAosValue[1] + "\" id=\"radio_" + i + "_" + j + "_0" + totalOptionsAdded + "\" checked>";
				} else {
					subAosHtml += "<input type=\"radio\" name=\"DDI_SUB_AOS_01_RADIO_" + aosName.replace(/ /g,"_") + "\" value=\"" + subAosValue[1] + "\" id=\"radio_" + i + "_" + j + "_0" + totalOptionsAdded + "\">";
				}
				subAosHtml += "<label for=\"radio_" + i + "_" + j + "_0" + totalOptionsAdded+ "\">" + subAosValue[0] + "</label></td>";
				totalOptionsAdded = totalOptionsAdded + 1;
				if((totalOptionsAdded % 2) == 0) {
					subAosHtml += "</tr>";
				}
				isOptionAdded = true;
			}
			if((totalOptionsAdded % 2) != 0) {
				subAosHtml += "</tr>";
			}
			subAosHtml += "</table>";
		}
	}
	return isOptionAdded ? subAosHtml : ""; 
}

function getAosLabel(aosName) {
	var field = document.getElementById('AOS_LABEL_MAPPING');
	if(field) {
		var aosLabelMapping = getFieldValueTF(field);
		var aosLabelArray = aosLabelMapping.split(",");
		for(var i = 0; i < aosLabelArray.length; i++) {
			if(aosLabelArray[i] != null && aosLabelArray[i] != "") {
				var aosLabelEntry = aosLabelArray[i].split(":");
				if(aosLabelEntry[0] == aosName) {
					return aosLabelEntry[1];
				}
			}
		}
	}
	return aosName;
}
