function toggleCorporateSections() {
	                    
    if (document.getElementById("rdoCorporation").checked) {
        document.getElementById("corporationStateContainer").style.display = 'block';
        document.getElementById("yearContainer").style.display = 'block';
    } else {
        document.getElementById("corporationStateContainer").style.display = 'none';
        document.getElementById("corporation_state").selectedIndex = 0;
        document.getElementById("lbl_corporation_state").className = "";
        document.getElementById("yearContainer").style.display = 'none';
        document.getElementById("year").value = "";
        document.getElementById("lbl_year").className = "";
    }
    
}

function toggleAssociatedTextField(pCheckboxContainerId) {
	
	wTextFieldContainerId = "txt" + pCheckboxContainerId.substr(3);
	wTextFieldId = wTextFieldContainerId.substr(0, wTextFieldContainerId.indexOf("Container"));
	
	if (document.getElementById(pCheckboxContainerId).className == "controlContainer unchecked") {
		document.getElementById(wTextFieldContainerId).style.display = "block";
	} else {
		document.getElementById(wTextFieldId).value = "Manufacturers";
		document.getElementById(wTextFieldId).style.color = "#999";
		document.getElementById(wTextFieldId).style.fontStyle = "italic";
		document.getElementById(wTextFieldContainerId).style.display = "none";
	}
	
}

function resetDefaultText(pTextBoxId) {
	
	wTextBox = document.getElementById(pTextBoxId);
	
	if (trim(wTextBox.value) == "") {
		wTextBox.value = "Manufacturers";
		wTextBox.style.color = "#999";
		wTextBox.style.fontStyle = "italic";
	} else {
		wTextBox.style.color = "#000";
		wTextBox.style.fontStyle = "normal";
	}
	
}

function clearDefaultText(pTextBoxId) {
	
	wTextBox = document.getElementById(pTextBoxId);
	
	if (trim(wTextBox.value) == "Manufacturers") {
		wTextBox.value = "";
		wTextBox.style.color = "#000";
		wTextBox.style.fontStyle = "normal";
	}
	
}

function validatePartnerForm() {

	var wMissingFieldsErrorMessages = new Array();
    var wOtherErrorMessages = new Array();

    if (!validateCompany()) {
        wMissingFieldsErrorMessages.push("Company");
    }
    
    if (!validateWarehouse()) {
    	wMissingFieldsErrorMessages.push("Warehouse Address");
    }
    
    if (!validateCity()) {
    	wMissingFieldsErrorMessages.push("City");
    }
    
    if (!validateProvince()) {
    	wMissingFieldsErrorMessages.push("State / Province");
    }
    
    if (!validatePostal()) {
    	wMissingFieldsErrorMessages.push("Zip / Postal");
    }
    
    if (!validatePhone("company_phone")) {
    	wMissingFieldsErrorMessages.push("Company Phone");
    }
    
    if (!validateTypeOfEnterprise()) {
        wMissingFieldsErrorMessages.push("Type of Enterprise");
    } else {
    	
    	if (document.getElementById("rdoCorporation").checked) {
    	
	    	if (!validateCorporationState()) {
	    		wMissingFieldsErrorMessages.push("Corporation State");
	    	}
	    	
	    	if (!validateCorporationYear()) {
	    		wMissingFieldsErrorMessages.push("Corporation Year");
	    	}
    	
    	}
    	
    }

    if (!validateNumberOfEmployees()) {
        wMissingFieldsErrorMessages.push("Number of Employees");
    }
    
    if (!validateFirstName()) {
        wMissingFieldsErrorMessages.push("First Name");
    }
    
    if (!validateLastName()) {
        wMissingFieldsErrorMessages.push("Last Name");
    }
    
    if (!validateTitle()) {
        wMissingFieldsErrorMessages.push("Title");
    }

    if (!validatePhone("contact_phone")) {
    	wMissingFieldsErrorMessages.push("Contact Phone");
    }
    
    if (!validateEmail()) {
        wMissingFieldsErrorMessages.push("Email");
        if (document.getElementById("email").value != "") {
            wOtherErrorMessages.push("The email you provided is not a valid address.");
        }
    } else {
    	if (!validateConfirmEmail()) {
            wMissingFieldsErrorMessages.push("Confirm Email");
            wOtherErrorMessages.push("The emails you entered did not match.");
        }
    }
    
    if (!validateGeographicalLocation()) {
    	wOtherErrorMessages.push("Please select a Geographical Coverage Region.");
    }
    
    if (!validateProductSpecialties()) {
    	wOtherErrorMessages.push("Please provide at least one Product Specialty.");
    }
    
    if (wMissingFieldsErrorMessages.length > 0 || wOtherErrorMessages.length > 0) {
        
        var wErrorMessageContainer = document.getElementById("errorMessages");
        var wErrorMessageContent = "";
        
        if (wMissingFieldsErrorMessages.length > 0) {
            
            if (wMissingFieldsErrorMessages.length > 1) {
                wErrorMessageContent += "<p class=\"error\">The fields ";
            } else {
                wErrorMessageContent += "<p class=\"error\">The field ";
            }
                
            for (var i = 0; i < wMissingFieldsErrorMessages.length; i++) {
                wErrorMessageContent += wMissingFieldsErrorMessages[i];
                
                if (i < wMissingFieldsErrorMessages.length - 1) {
                    wErrorMessageContent += ", ";
                }
                
            }
            
            if (wMissingFieldsErrorMessages.length > 1) {
                wErrorMessageContent += " are not complete.</p>";
            } else {
                wErrorMessageContent += " is not complete.</p>";
            }
            
        }
        
        if (wOtherErrorMessages.length > 0) {
            
            for (var i = 0; i < wOtherErrorMessages.length; i++) {
                wErrorMessageContent += "<p class=\"error\">" + wOtherErrorMessages[i] + "</p>";
            }
            
        }
        
        wErrorMessageContent += "<p style=\"margin-top: 10px;\" class=\"error\">Please fill in the information and resubmit the form.</p>"
        
        wErrorMessageContainer.innerHTML = wErrorMessageContent;
        wErrorMessageContainer.style.display = "block";
        window.scrollTo(0, 0);
        
        return false;
        
    }

    return true;

}

function trim(str) {
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

function validateCompany() {
    
    var str = trim(document.getElementById("company").value);
    
    if (str.length > 0 && str.length <= 40) {
        document.getElementById("lbl_company").className = "";
        return true;
    } else {
        document.getElementById("lbl_company").className = "error";
    }
    return false;
    
}

function validateWarehouse() {
	
	var str = trim(document.getElementById("warehouse").value);
    
    if (str.length > 0 && str.length <= 255) {
        document.getElementById("lbl_warehouse").className = "";
        return true;
    } else {
        document.getElementById("lbl_warehouse").className = "error";
    }
    
    return false;
	
}

function validateCity() {
	
	var str = trim(document.getElementById("city").value);
    
    if (str.length > 0 && str.length <= 30) {
        document.getElementById("lbl_city").className = "";
        return true;
    } else {
        document.getElementById("lbl_city").className = "error";
    }
    
    return false;
	
}

function validateProvince() {
	
    if (document.getElementById("province").selectedIndex > 0) {
        document.getElementById("lbl_province").className = "";
        return true;
    } else {
        document.getElementById("lbl_province").className = "error";
    }
    
    return false;
	
}

function validatePostal() {
	
	var str = trim(document.getElementById("postal").value);
    
    if (str.length > 0 && str.length <= 10) {
        document.getElementById("lbl_postal").className = "";
        return true;
    } else {
        document.getElementById("lbl_postal").className = "error";
    }
    
    return false;
	
}

function validatePhone(pFieldId) {
    
    var str = trim(document.getElementById(pFieldId).value);
    
    if (str.length > 0 && str.length <= 40) {
        document.getElementById("lbl_" + pFieldId).className = "";
        return true;
    } else {
        document.getElementById("lbl_" + pFieldId).className = "error";
    }
    
    return false;
    
}

function validateTypeOfEnterprise() {
    
	var wCorporationType = new Array();
	
	var wIsValid = false;
	
	wCorporationType[0] = document.getElementById("rdoCorporationContainer");
	wCorporationType[1] = document.getElementById("rdoPartnershipContainer");
	wCorporationType[2] = document.getElementById("rdoSoleProprietorContainer");
	wCorporationType[3] = document.getElementById("rdoOtherContainer");
	
	for (var i = 0; i < wCorporationType.length; i++) {
		if (wCorporationType[i].className == "controlContainer selected") {
			for (var j = 0; j < wCorporationType.length; j++) {
				document.getElementById("lbl_type_of_enterprise").className = "";
			} 
			wIsValid = true;
			break;
		}
	}
	
	if (!wIsValid) {
		document.getElementById("lbl_type_of_enterprise").className = "error";
	}
	
	return wIsValid;
    
}

function validateCorporationState() {
	
	var select = document.getElementById("corporation_state");
    
    if (select.selectedIndex > 0) {
        document.getElementById("lbl_corporation_state").className = "";
        return true;
    } else {
        document.getElementById("lbl_corporation_state").className = "error";
    }
    
    return false;
	
}

function validateCorporationYear() {
		
   if (document.getElementById("year").value.length == 4 && isNumeric(document.getElementById("year").value)) {
	   document.getElementById("lbl_year").className = "";
	   return true;
   } else {
	   document.getElementById("lbl_year").className = "error";
   }
		   
   return false;
   
}

function validateNumberOfEmployees() {
	
	var select = document.getElementById("number_of_employees");
    
    if (select.selectedIndex > 0) {
        document.getElementById("lbl_number_of_employees").className = "";
        return true;
    } else {
        document.getElementById("lbl_number_of_employees").className = "error";
    }
    
    return false;
	
}

function validateFirstName() {
    
    var str = trim(document.getElementById("first_name").value);
    
    if (str.length > 0 && str.length <= 40) {
        document.getElementById("lbl_first_name").className = "";
        return true;
    } else {
        document.getElementById("lbl_first_name").className = "error";
    }
    return false;
    
}

function validateLastName() {
    
    var str = trim(document.getElementById("last_name").value);
    
    if (str.length > 0 && str.length <= 80) {
        document.getElementById("lbl_last_name").className = "";
        return true;
    } else {
        document.getElementById("lbl_last_name").className = "error";
    }
    return false;
    
}

function validateTitle() {
    
    var str = trim(document.getElementById("title").value);
    
    if (str.length > 0 && str.length <= 40) {
        document.getElementById("lbl_title").className = "";
        return true;
    } else {
        document.getElementById("lbl_title").className = "error";
    }
    return false;
    
}

function validateEmail() {
    
    var str = trim(document.getElementById("email").value);
    
    if (checkEmail(str)) {
        document.getElementById("lbl_email").className = "";
        return true;
    } else {
        document.getElementById("lbl_email").className = "error";
    }
    return false;
    
}

function validateConfirmEmail() {
    
    if (trim(document.getElementById("confirm_email").value) != trim(document.getElementById("email").value)) {
        document.getElementById("lbl_confirm_email").className = "error";
        return false;
    } else {
        document.getElementById("lbl_confirm_email").className = "";
    }
    return true;
    
}

function validateGeographicalLocation() {
	
	var wGeographicArray = new Array();
	
	var wIsValid = false;
	
	wGeographicArray[0] = document.getElementById("chkUSContainer");
	wGeographicArray[1] = document.getElementById("chkCanadaContainer");
	wGeographicArray[2] = document.getElementById("chkCentralAmericaContainer");
	wGeographicArray[3] = document.getElementById("chkSouthAmericaContainer");
	wGeographicArray[4] = document.getElementById("chkEuropeContainer");
	wGeographicArray[5] = document.getElementById("chkAsiaContainer");
	
	for (var i = 0; i < wGeographicArray.length; i++) {
		if (wGeographicArray[i].className == "formRow checked") {
			for (var j = 0; j < wGeographicArray.length; j++) {
				document.getElementById("lbl_geo_coverage").className = "";
			} 
			wIsValid = true;
			break;
		}
	}
	
	if (!wIsValid) {
		for (var j = 0; j < wGeographicArray.length; j++) {
			document.getElementById("lbl_geo_coverage").className = "error";
		}
	}
	
	return wIsValid;
	
}

function validateProductSpecialties() {
	
	var wSpecialtiesArray = new Array();
	var wIsValid = false;
	
	wSpecialtiesArray[0] = document.getElementById("chkCopierManufacturersContainer");
	wSpecialtiesArray[1] = document.getElementById("chkDesktopCPUManufacturersContainer");
	wSpecialtiesArray[2] = document.getElementById("chkDigitalCameraManufacturersContainer");
	wSpecialtiesArray[3] = document.getElementById("chkMonitorManufacturersContainer");
	wSpecialtiesArray[4] = document.getElementById("chkNetworkManufacturersContainer");
	wSpecialtiesArray[5] = document.getElementById("chkNotebookManufacturersContainer");
	wSpecialtiesArray[6] = document.getElementById("chkPDAManufacturersContainer");
	wSpecialtiesArray[7] = document.getElementById("chkPrinterDotMatrixContainer");
	wSpecialtiesArray[8] = document.getElementById("chkPrinterInkContainer");
	wSpecialtiesArray[9] = document.getElementById("chkPrinterLaserContainer");
	wSpecialtiesArray[10] = document.getElementById("chkPrinterMultifunctionContainer");
	wSpecialtiesArray[11] = document.getElementById("chkPrinterPlotterContainer");
	wSpecialtiesArray[12] = document.getElementById("chkPrinterThermalContainer");
	wSpecialtiesArray[13] = document.getElementById("chkProjectorContainer");
	wSpecialtiesArray[14] = document.getElementById("chkScannerContainer");
	wSpecialtiesArray[15] = document.getElementById("chkServerContainer");
	wSpecialtiesArray[16] = document.getElementById("chkStorageContainer");
	
	for (var i = 0; i < wSpecialtiesArray.length; i++) {
		document.getElementById("lbl_product_specialties").className = "";
	}
	
	for (var i = 0; i < wSpecialtiesArray.length; i++) {
		if (wSpecialtiesArray[i].className == "controlContainer checked") {
			if (document.getElementById("txt" + wSpecialtiesArray[i].id.substr(3, wSpecialtiesArray[i].id.indexOf("Container") - 3)).value == "" || 
					document.getElementById("txt" + wSpecialtiesArray[i].id.substr(3, wSpecialtiesArray[i].id.indexOf("Container") - 3)).value == "Manufacturers") {
				document.getElementById("lbl" + wSpecialtiesArray[i].id.substr(3, wSpecialtiesArray[i].id.indexOf("Container") - 3)).className = "error";
				document.getElementById("lbl_product_specialties").className = "error";
			} else {
				document.getElementById("lbl" + wSpecialtiesArray[i].id.substr(3, wSpecialtiesArray[i].id.indexOf("Container") - 3)).className = "";
				document.getElementById("lbl_product_specialties").className = "";
			}
			
			wIsValid = true;
		}
	}
	
	if (!wIsValid) {
		document.getElementById("lbl_product_specialties").className = "error";
	}
	
	return wIsValid;
	
}

function checkForSetValues() {
	
	if (document.getElementById("rdoCorporation").checked) {
		document.getElementById("corporationStateContainer").style.display = "block";
		document.getElementById("yearContainer").style.display = "block";
	}
	
	var wSpecialtiesArray = new Array();
	
	wSpecialtiesArray[0] = document.getElementById("chkCopierManufacturers");
	wSpecialtiesArray[1] = document.getElementById("chkDesktopCPUManufacturers");
	wSpecialtiesArray[2] = document.getElementById("chkDigitalCameraManufacturers");
	wSpecialtiesArray[3] = document.getElementById("chkMonitorManufacturers");
	wSpecialtiesArray[4] = document.getElementById("chkNetworkManufacturers");
	wSpecialtiesArray[5] = document.getElementById("chkNotebookManufacturers");
	wSpecialtiesArray[6] = document.getElementById("chkPDAManufacturers");
	wSpecialtiesArray[7] = document.getElementById("chkPrinterDotMatrix");
	wSpecialtiesArray[8] = document.getElementById("chkPrinterInk");
	wSpecialtiesArray[9] = document.getElementById("chkPrinterLaser");
	wSpecialtiesArray[10] = document.getElementById("chkPrinterMultifunction");
	wSpecialtiesArray[11] = document.getElementById("chkPrinterThermal");
	wSpecialtiesArray[12] = document.getElementById("chkProjector");
	wSpecialtiesArray[13] = document.getElementById("chkScanner");
	wSpecialtiesArray[14] = document.getElementById("chkServer");
	wSpecialtiesArray[15] = document.getElementById("chkStorage");
	
	for (var i = 0; i < wSpecialtiesArray.length; i++) {
		
		if (wSpecialtiesArray[i].checked) {
			document.getElementById("txt" + wSpecialtiesArray[i].id.substr(3) + "Container").style.display = "block";
			if (document.getElementById("txt" + wSpecialtiesArray[i].id.substr(3)).value != "Manufacturers") {
				document.getElementById("txt" + wSpecialtiesArray[i].id.substr(3)).style.color = "#000";
				document.getElementById("txt" + wSpecialtiesArray[i].id.substr(3)).style.fontStyle = "normal";
			}
		}
	}
	
}

function isNumeric(str) {
	
	   var ValidChars = "0123456789";
	   var IsNumber = true;
	   var Char;
	 
	   for (i = 0; i < str.length && IsNumber == true; i++) { 
	      Char = str.charAt(i); 
	      if (ValidChars.indexOf(Char) == -1) {
	         IsNumber = false;
	      }
	   }

	   return IsNumber;
		   
	}

function checkEmail(str) {

    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
    if (str.indexOf(at)==-1) {
       return false;
    }

    if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
       return false;
    }

    if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
        return false;
    }

     if (str.indexOf(at,(lat+1)) != -1) {
        return false;
     }

     if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) {
        return false;
     }

     if (str.indexOf(dot,(lat + 2)) == -1) {
        return false;
     }
    
     if (str.indexOf(" ") != -1) {
        return false;
     }

     return true;
}