// special CCI Validation 09/15/2004 - Jacob - to be used on all CCI Forms.
// FMU Online validation is slightly different - Jacob 11/23/2004
var sValidColor = 'white';
var sInvalidColor = 'tomato';

function ValidateData(oForm) { 
	// call these to make sure the hiddens don't get unset
	if (!validate('firstname','First Name',oForm)) { return false; }
	if (!validate('lastname','Last Name',oForm)) { return false; }
	// phones - cci only - requires one of the two phones but not both
	var bFoundValidPhone = false;
	var sPhoneError = '';
	if (oForm.dayphone.value.length > 0) {
		sPhoneError = CCiPhoneIsValid(oForm.dayphone,'Daytime Phone');
		if (sPhoneError.length == 0) {
			bFoundValidPhone = true;
		}
		else {
			oForm.dayphone.value = '';
		}
	}
	if (oForm.evephone.value.length > 0 ) {
		sPhoneError = CCiPhoneIsValid(oForm.evephone,'Evening Phone');
		if (sPhoneError.length == 0) {
			bFoundValidPhone = true;
		}
		else { 
			oForm.evephone.value = '';
		}
	}
	if (!bFoundValidPhone) {
		// no valid phone found
		alert('Form Error:\nYou must enter a valid 10 digit phone number for either day or evening.')
		markField(oForm.dayphone,sInvalidColor);
		markField(oForm.evephone,sInvalidColor);
		oForm.evephone.focus();
		return false;
	}
	else {
		// phone is valid get rid of highlighting
		markField(oForm.dayphone,sValidColor);
		markField(oForm.evephone,sValidColor);		
	}
	// address
	if (!validate('email','E-mail Address',oForm)) { return false; }
	if (!checkEmail(oForm.email.value)) { alert ('Form Error:\nE-mail Address must be valid.'); markField(oForm.email,sInvalidColor); oForm.email.focus(); return false; }
	if (!validate('address','Street Address',oForm)) { return false; }
	if (!validate('city','City',oForm)) { return false; }
	if (!validate('state','State',oForm)) { return false; }	
	if (!validate('zip','Zip Code',oForm)) { return false; }
	if (!validate('country','Country',oForm)) { return false; }
	// only validates if clientid is not a hidden field
	if (oForm.clientid.type != 'hidden') {
		if (!validate('clientid','Preferred Location',oForm)) { return false; }	
	}
	// only validates if program is not a hidden field	
	if (oForm.program.type != 'hidden') {
		if (!validate('program','Program of Interest',oForm)) { return false; }
	}
	// only validates if gradyear is not a hidden field
	if (oForm.gradyear.type != 'hidden') {
		if (!validate('gradyear','High School Graduation Year',oForm)) { return false; }
	}
	return true;
}

function checkEmail(sEmail) {
        var AtSign = sEmail.indexOf('@');
        var Period = sEmail.lastIndexOf('.');
        if (AtSign > -1 && Period > -1 && AtSign < Period) {
                return true;
        }
        else {
                return false;
        }
}


function CCiPhoneIsValid(Obj,sLabel) {
        var sPhone = Obj.value;
        var sPhoneTemp = sPhone;
        sPhone = '';
        var sNumbers = '1234567890';
        for (var i=0;i<sPhoneTemp.length;i++) {
                if (sNumbers.indexOf(sPhoneTemp.charAt(i)) > -1) {
                        sPhone += sPhoneTemp.charAt(i);
                }
        }
        if (sPhone.charAt(0) == '1' || sPhone.charAt(0) == 1) {
                sPhone = sPhone.substring(1,(sPhone.length));
        }
        if (sPhone.length != 10) {
                return sLabel + ' must be a 10 digit number\n';
        }
        else {
                Obj.value = sPhone;
        }
        var sAreaCode = sPhone.substring(0,3);
        var sPrefix = sPhone.substring(3,6);
        var sNumber = sPhone.substring(6,10);
        ary7NotAllowed = new Array('1234567','4567890','0000000','1111111','2222222','3333333','4444444','5555555','6666666','7777777','8888888','9999999')
        ary3NotAllowed = new Array('000','911','555');
        for (var i=0;i<ary7NotAllowed.length;i++) {
                if (sPrefix.toString() + sNumber.toString() == ary7NotAllowed[i])  {
                        return sLabel + ' must be a valid phone number\n';
                }
        }
        for (var i=0;i<ary3NotAllowed.length;i++) {
                if (sPrefix.toString() == ary3NotAllowed[i].toString()) {
                        return sLabel + ' must be a valid phone number\n';
                }
        }
        return '';
}

function markField(oField,sColor) {
/*			oField.style.borderLeftColor = sColor;
			oField.style.borderTopColor = sColor;
			oField.style.borderRightColor = sColor;
			oField.style.borderBottomColor = sColor;
*/
			oField.style.backgroundColor = sColor;
}

function validate(sFieldName,sLabelName,oForm) {
        var oField = eval('oForm.' + sFieldName);
        var undefined;
        if (oField != undefined) {
                 if (CheckRequired(oField) ) {
					 	markField(oField,sValidColor);
                        return true;
                }
                else {
                        if (oField[0] == undefined || oField.type == 'select-one') {
                                alert('Form Error:\nPlease complete: ' + sLabelName + '.');
								markField(oField,sInvalidColor);
                                oField.focus();
                                return false;
                        }
                        else {
                                if (!CheckRequired(oField)) {
                                        alert('Form Error:\nPlease complete: ' + sLabelName + '.');
										markField(oField,sInvalidColor);
                                        oField[0].focus();
                                        return false;
                                }
                        }
                }
        }
        else if (oField[0] != undefined) {
                if (!CheckRequired(oField)) {
                                        alert('Form Error:\nPlease complete: ' + sLabelName + '.');
										markField(oField,sInvalidColor);
                                        oField[0].focus();
                                        return false;
                }
        }
        else {
                alert('undefined field in form: ' + sFieldName);
                return false;
        }
}

function CheckRequired(Obj) {
        var ObjType;
        var retVal;
        var x = 0;
        var undefined;
        ObjType = Obj.type;
        /* types: password, radio, select-multiple, select-one, text, textarea */
        if (ObjType == undefined) {
                ObjType = Obj[0].type;
        }
        switch(ObjType) {
                case 'hidden':
                        if(Obj.value.length < 1) {
                                retVal = false;
                        }
                        else {
                                retVal = true;
                        }
                break;
                case 'text':
                        if(Obj.value.length < 1) {
                                retVal = false;
                        }
                        else {
                                retVal = true;
                        }
                break;

                case 'textarea':
                        if(Obj.value.length < 1) {
                                retVal = false;
                        }
                        else {
                                retVal = true;
                        }
                break;

                case 'password':
                        if(Obj.value.length < 1) {
                                retVal = false;
                        }
                        else {
                                retVal = true;
                        }
                break;
                case 'file':
                        if(Obj.value.length < 1) {
                                retVal = false;
                        }
                        else {
                                retVal = true;
                        }
                break;
                case 'select-one':
                        if(Obj.selectedIndex > 0) {
                                retVal = true;
                        }
                        else {
                                retVal = false;
                        }
                break;

                case 'select-multiple':
                        retVal = false;
                        for (var x=0;x<Obj.options.length;x++) {
                                if (Obj[x].selected) {
                                        retVal = true;
                                }
                        }
                break;

                case 'radio':
                        retVal = false;
                        for(var x=0;x<Obj.length;x++) {
                                if (Obj[x].checked) {


                                        retVal = true;
                                }
                        }
                break;

                case 'checkbox':

                        if (navigator.appName == 'Netscape' && (navigator.appVersion.toString().substr(0,1) == '4' || navigator.appVersion.toString().substr(0,1) == '3' || navigator.appVersion.toString().substr(0,1) == '2')) {
                                var arrNum = Obj.length - 1;
                                var cbObj;
                                if (Obj[arrNum] == undefined) {
                                        cbObj = Obj;
                                }
                                else {
                                        cbObj = Obj[arrNum];
                                }
                                var formObj = cbObj.form;
                                var cbName = cbObj.name;
                                var cbCount = 0;
                                var cbFirstChecked = cbObj.checked;
                                var cbOtherChecked = false;
                                for (var cb=0;cb<formObj.length;cb++) {
                                        if (formObj.elements[cb].type == 'checkbox' && formObj.elements[cb].name == cbName) {
                                                cbCount++;
                                                if (formObj.elements[cb].checked) {
                                                        cbOtherChecked = true;
                                                        }
                                        }
                                }
                                if (cbCount > 0) {
                                        if (cbFirstChecked || cbOtherChecked) {
                                                retVal = true;
                                        }
                                        else {
                                                retVal = false;
                                        }
                                }
                                else {
                                        if (cbFirstChecked) {
                                                retVal = true;
                                        }
                                        else {
                                                retVal = false;
                                        }
                                }
                        }
                        else {
                        retVal = false;
                        if (Obj.length != undefined) {
                                for(var x=0;x<Obj.length;x++) {
                                        if (Obj[x].checked) {
                                                retVal = true;
                                        }
                                }
                        }
                        else {
                                if (Obj.checked == true) {
                                        retVal = true;
                                }
                        }
                }
                break;


                default:
                        retVal = true;
        }
        return retVal;
}

// end std validation