var dlErrors = new Object;


function submitform() {
    var errorBox = document.getElementById("dl-errors");
    errorBox.innerHTML = "Validating Submission...";

    if(document.trialDownloadForm.onsubmit()) {  //this check triggers the validations
        document.trialDownloadForm.submit();
    }
}


function vmwarePop() {
    var x = screen.width - 550;
    
    vmwareWindow = window.open("http://www.vmware.com/products/player",
        "vmware","resizable=yes,width=500,height=650,scrollbars=yes");
    
    vmwareWindow.moveTo(x, 0);
    return false;
}         



function validateFirstName(fieldName) {
    if (document.getElementById(fieldName)) {
        if (document.getElementById(fieldName).value == '') {
            dlErrors[fieldName] = "No First Name has been defined";
            document.getElementById(fieldName).className = "error";
        } else {
            dlErrors[fieldName] = "";
            document.getElementById(fieldName).className = "success";
        }
    }
}

function validateLastName(fieldName, firstNameField) {
    var error = 0;
    if (document.getElementById(fieldName)) {
        if (document.getElementById(fieldName).value == '') {
            dlErrors[fieldName] = "No Last Name has been defined";
            document.getElementById(fieldName).className = "error";
		    error = 1;
        } else if(document.getElementById(firstNameField)) {
            if (document.getElementById(fieldName).value == document.getElementById(firstNameField).value) {
                dlErrors[fieldName] = "Your First and Last Names cannot match";
	            document.getElementById(fieldName).className = "error";
			    error = 1;
            }
        }
        if (error == 0) {
            dlErrors[fieldName] = "";
            document.getElementById(fieldName).className = "success";
        }
    }
}

function validateCompany(fieldName) {
    if (document.getElementById(fieldName)) {
        if (document.getElementById(fieldName).value == '') {
            dlErrors[fieldName] = "No Company Name defined";
            document.getElementById(fieldName).className = "error";
        } else {
            dlErrors[fieldName] = "";
            document.getElementById(fieldName).className = "success";
        }
    }
}

function validateEmail(fieldName) {

    if(document.getElementById(fieldName)) {
        var email_txt = document.getElementById(fieldName).value;
    
		//break up the email to test our various parts
		var sign   = email_txt.indexOf("@");
		var before = email_txt.substring(0, sign);
		var after  = email_txt.substring(sign+1, email_txt.length);
		var lower  = after.toLowerCase();
		var coma   = before.indexOf(",");
		var period = after.indexOf(".");
		
		var myRegxp = /^([a-zA-Z0-9_@.-]+)$/;
	
		var invalid_email = 0;
		var alert_txt = 'The Email Address is invalid';
	
	    //the default action is to notify the user
	    //this is to make sure that we previous usage of the
	    //function works correctly. If you don't want to notify then
	    //send in 0.
	
	    if ( (period == -1) 
	         || (sign == 0) 
	         || (sign == -1) 
	         || (sign == (email_txt.length-1)) 
	         || (coma >= 0) ) 
	    {
	        invalid_email = 1;  //set our invalid flag
	    }
	    
		var emailComponents = email_txt.split("@");
	
	    if (emailComponents.length > 2) {
	        invalid_email = 1;  //set our invalid flag
	    }
	
	
		//if our email has no text it will fail above
		//however, javascript will throw an error if we try
		//to access emailComponents[1] because it doesn't exist.
		var domainComponents = new Array();
	    if(!invalid_email) {
	        domainComponents = emailComponents[1].split(".");
	    }
	    if ( 
			!(invalid_email) &&
			(
                (myRegxp.test(email_txt)==false) ||
				emailComponents[0].match(" ") || 
				emailComponents[0]=="" || 
				domainComponents[0].match(" ") || 
                domainComponents[1].match(" ") || 
                domainComponents[0].match("_") || 
                domainComponents[1].match("_") || 
				domainComponents[0] == "" || 
				domainComponents[1] == ""
			)
		) {
	         //|| domainComponents.length>2) ) {
	        invalid_email = 1;  //set our invalid flag
	    }
	
	    if (invalid_email) { //if we have an invalid email
	                        //then return false
	        //alert(alert_txt);
            dlErrors[fieldName] = alert_txt;
            document.getElementById(fieldName).className = "error";
			return false;
	    }
    }
    if (!invalid_email) {
        dlErrors[fieldName] = "";
		document.getElementById(fieldName).className = "success";
    }
    
	return true;

}

function validatePhone(fieldName) {
    if (document.getElementById(fieldName)) {
        if (document.getElementById(fieldName).value == '') {
            dlErrors[fieldName] = "No Phone Number defined";
            document.getElementById(fieldName).className = "error";
        } else {
            dlErrors[fieldName] = "";
            document.getElementById(fieldName).className = "success";
        }
    }

}

function validateRole(fieldName) {
    if(document.getElementById(fieldName)) {
        
	    var myindex = document.getElementById(fieldName).selectedIndex;
	    if (myindex=='') {
            dlErrors[fieldName] = "You must select a Role";
            document.getElementById(fieldName).className = "error";
        } else {
            dlErrors[fieldName] = "";
            document.getElementById(fieldName).className = "success";
        }
    }
}


function validateForm() {
    validateFirstName('frmFirstName');
    validateLastName('frmLastName', 'frmFirstName');
    validateCompany('frmCompany');
    validateEmail('frmEmail');
    validatePhone('frmPhone');
    validateRole('frmTitle');

    var errorTxt = setErrorMsg();
    if (errorTxt != "" && document.getElementById("dl-errors")) {
        var errorBox = document.getElementById("dl-errors");
        errorBox.innerHTML = "There were errors in your account information:<ul>" + errorTxt + "</ul>";
        return false;
    }
    return true;
}


function setErrorMsg() {
    var fieldList = Array();
    fieldList = ("frmFirstName", "frmLastName", "frmCompany", "frmEmail", "frmPhone", "frmTitle");

    var errorTxt = "";
    for (var i in dlErrors) {
        if(dlErrors[i]) {
            errorTxt = errorTxt + "<li>" + dlErrors[i] + "</li>";         
        }
    }
    if (errorTxt != "" && document.getElementById("dl-errors")) {
        var errorBox = document.getElementById("dl-errors");
        errorBox.innerHTML = "There were errors in your account information:<ul>" + errorTxt + "</ul>";
    } else if(document.getElementById("dl-errors")) {
        var errorBox = document.getElementById("dl-errors");
        errorBox.innerHTML = "";
    }
    return errorTxt;
}

