/* -*-java-*- */
function isValidEmail(email, required) {
    if (required==undefined) { 
        required=true;
    }
    if (email==null) {
        if (required) {
            return false;
        }
        return true;
    }
    if (email.length==0) {  
        if (required) {
            return false;
        }
        return true;
    }
    if (! allValidChars(email)) {  // check to make sure all characters are valid
        return false;
    }	
    if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
        return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
        return false;
    } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
        return false;
    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	return false;
    } else if (email.indexOf(".") == email.length) {  // . must not be the last character
	return false;
    }
    return true;
}

function allValidChars(email) {
    var parsed = true;
    var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
    for (var i=0; i < email.length; i++) {
	var letter = email.charAt(i).toLowerCase();
	if (validchars.indexOf(letter) != -1)
	    continue;
	parsed = false;
	break;
    }
    return parsed;
}

function validate(){	
    
    //varWhere = document.forms[0].txtWhere;//.value;
    
    var varWhere = document.getElementById('txtWhere');
    var idxWhere = varWhere.selectedIndex;
    var strWhere = varWhere.options[idxWhere].text;
    
    var varWhen = document.getElementById('txtWhen');
    var idxWhen = varWhen.selectedIndex;
    var strWhen = varWhen.options[idxWhen].text;
     
    var varCurrent = document.getElementById('txtCurrent');
    var idxCurrent = varCurrent.selectedIndex;
    var strCurrent = varCurrent.options[idxCurrent].text;

    var varAddress = document.getElementById('txtAddress');
    var strAddress;
    if(varAddress != null){ strAddress = varAddress.value; }

    var varCity    = document.getElementById("txtCity");
    var strCity;
    if(varCity != null){ strCity = varCity.value; }

    var varState   = document.getElementById("txtState");
    var idxState   = 0;
    var strState;
    if(varState != null){
	idxState = varState.selectedIndex;
	strState = varState.options[idxState].text;
    }

    var varYear   = document.getElementById("txtYear");
    var idxYear   = 0;
    var strYear;
    if(varYear != null){
	idxYear = varYear.selectedIndex;
	strYear = varYear.options[idxYear].text;
    }

    var varZip   = document.getElementById('txtZip');
    var varFName = document.getElementById('txtFName');
    var varLName = document.getElementById('txtLName');
     
    var fldEmail = document.getElementById('email');
    var strEmail = fldEmail.value;

    var varPhone = document.getElementById('txtPhone');    
    var varCheck = document.getElementById('txtCheck');

    var fld;
    var str;

    var froms = document.forms[0].getElementsByTagName('input');
    for(var i = 0; i < froms.length; i++){
	if(froms[i].name == 'txtFrom' && froms[i].checked && froms[i].value != "us"){
	    alert("These programs are only available to US residents at the present time.");
	    document.location = "http://www.studyabroad.com/usa.html";
	    return false;
	}
    }

    if(varWhere == null || strWhere.length == 0 || idxWhere  == 0){
	alert("You must choose a country in which you wish to study.");
	varWhere.setAttribute('autocomplete', 'off');
	varWhere.focus();
	varWhere.setAttribute('autocomplete', 'on');
	return false;
    }
     
    if(varWhen == null || strWhen.length == 0 || idxWhen  == 0){
	alert("You must choose a time period of study.");
	varWhen.focus();
	return false;
    }
     
    if(varYear != null){
	if(idxYear == 0){
	    alert("Please enter the year you plan to leave");
	    varYear.setAttribute('autocomplete', 'off');
	    varYear.focus();
	    varYear.setAttribute('autocomplete', 'on');
	    return false;
	}
    }
    if(varCurrent == null || strCurrent.length == 0 || idxCurrent  == 0){
	alert("You must designate your current educational state.");
	varCurrent.setAttribute('autocomplete', 'off');
	varCurrent.focus();
	varCurrent.setAttribute('autocomplete', 'on');
	return false;
    }
     

    fld=varZip;
    if(fld!=null){
	if(fld.value.length==0){
	    alert("Please Enter Zip field ");
	    fld.setAttribute('autocomplete', 'off');
	    fld.focus();
	    fld.setAttribute('autocomplete', 'on');
	    return false;
	}
    }


    if(varAddress != null){
	if(strAddress.length == 0){
	    alert("Please enter Address");
	    fld = varAddress;
	    fld.setAttribute('autocomplete', 'off');
	    fld.focus();
	    fld.setAttribute('autocomplete', 'on');
	    return false;
	}
    }
    if(varCity != null){
	if(strCity.length == 0){
	    alert("Please enter City");
	    fld = varCity;
	    fld.setAttribute('autocomplete', 'off');
	    fld.focus();
	    fld.setAttribute('autocomplete', 'on');
	    return false;
	}
    }
    if(varState != null){
	if(idxState == 0){
	    alert("Please select State");
	    fld = varState;
	    fld.setAttribute('autocomplete', 'off');
	    fld.focus();
	    fld.setAttribute('autocomplete', 'on');
	    return false;
	}
    }

    fld=varFName;
    if(fld!=null){
	if(fld.value.length==0){
	    alert("Please Enter First Name Field");
	    fld.setAttribute('autocomplete', 'off');
	    fld.focus();
	    fld.setAttribute('autocomplete', 'on');
	    return false;
	}
    }

    fld=varLName;
    if(fld!=null){
	if(fld.value.length==0){
	    alert("Please Enter Last name field");
	    fld.setAttribute('autocomplete', 'off');
	    fld.focus();
	    fld.setAttribute('autocomplete', 'on');
	    return false;
	}
    }

    fld=fldEmail;
    str=strEmail;
    if(fld == null || str.length==0){
	alert("Please Enter Email Field");
	fld.setAttribute('autocomplete', 'off');
	fld.focus();
	fld.setAttribute('autocomplete', 'on');
	return false;
    }

    if(!isValidEmail(str, true)){
	alert("Please correct Email"); 
	fld.setAttribute('autocomplete', 'off');
	fld.focus();
	fld.setAttribute('autocomplete', 'on');
	return false;
    }

    fld=varPhone;
    if(fld!=null){
	var fval = fld.value;
	var flen = fval.length;
	if(flen==0){
	    alert("Please Enter Phone field");
	    fld.setAttribute('autocomplete', 'off');
	    fld.focus();
	    fld.setAttribute('autocomplete', 'on');
	    return false;
	}else{
	    var dcount = 0;
	    for(var i = 0; i < flen; i++){
		var cc = fval.charAt(i);
		if(cc >= '0' && cc <= '9'){ dcount++;  continue; }
		if(cc == ' ') continue;
		if(cc == '-') continue;
		if(cc == ')') continue;
		if(cc == 'x') continue;
		if(cc == '(') continue;
		dcount = 0;
		break;
	    }
	    /* alert("fval "+fval+ " dcount "+dcount); */
	    if(dcount < 10 || dcount > 15){
		alert("Please Correct Phone");
		fld.setAttribute('autocomplete', 'off');
		fld.focus();
		fld.setAttribute('autocomplete', 'on');
		return false;
	    }
	}
    }

    if(!varCheck.checked){
	alert("You must confirm that AIFS may contact you by EMail or phone.");
	fld = varCheck;
	fld.setAttribute('autocomplete', 'off');
	fld.focus();
	fld.setAttribute('autocomplete', 'on');
	return false;
    }

    return true;
}
