var emailPattern = new RegExp(/^.+@[^\.].*\.[a-z]{2,}$/);

function rotateMainImage() {

	var index = Math.floor(Math.random() * 11);

	var element = document.getElementById('homeImage');
	index++;
	element.innerHTML = '<img src="img/bg' + index + '.jpg"/>';	
}

function setCookie(name, value, expires, path, domain, secure) {
    var expDate = new Date();
    expDate.setDate(expDate.getDate() + expires);
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expDate.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function toggleDiv(divname) {
	var thediv = document.getElementById(divname);

	if(thediv.style.visibility == "hidden") {
		return show(thediv);
	}
	else {
		return hide(thediv);
	}
}

function show(d) {
	d.style.visibility = "visible";
	d.style.display = "";
	return false;
}

function hide(d) {
	d.style.visibility = "hidden";
	d.style.display = "none";
	return false;
}

function toggleButton(b) {
	var thebutton = document.getElementById(b);
	if(thebutton.value == "Reset Password") {
		thebutton.value = "Cancel Password Reset";
		return false;
	}
	else {
		thebutton.value = "Reset Password";
		return false;
	}
	
}

function showError(id, message) {
    var element = document.getElementById(id);
    element.innerHTML = message;
    element.style.display = "inline";
}

function resetValidation () {
	var elements;
	elements = document.getElementsByTagName('div');
	
	for(var i = 0; i < elements.length; i++){
		var node = elements.item(i);
		for(var j = 0; j < node.attributes.length; j++) {
			if(node.attributes.item(j).nodeName == 'class') {
				if(node.attributes.item(j).nodeValue == 'formValidationError') {
					eval("node.style.display = 'none'");
				}
			}
		}
	}
}

function validateVolunteer() {
    resetValidation();
    if (document.getElementById("name").value == "") {
        showError("nameError", "required");
        return false;
    }
    else if (document.getElementById("phone").value == "") {
        showError("phoneError", "required");
        return false;
    }
    
    return true;
}

function validateUser() {
    resetValidation();
    if (document.getElementById("userid").value == "") {
        showError("useridError", "required");
        return false;
    }
    else if (document.getElementById("fname").value == "") {
        showError("fnameError", "required");
        return false;
    }
    else if (document.getElementById("lname").value == "") {
        showError("lnameError", "required");
        return false;
    }
    else if (document.getElementById("email").value == "") {
        showError("emailError", "required");
        return false;
    }
    else if (!checkEmail(document.getElementById("email").value)) {
        showError("emailError", "invalid email address");
        return false;
    }    
    else if (document.getElementById("pw").value == "") {
        showError("pwError", "required");
        return false;
    }
    else if (document.getElementById("pw2").value == "") {
        showError("pw2Error", "required");
        return false;
    }
    else if (document.getElementById("pw").value !=
             document.getElementById("pw2").value) {
        showError("pwError", "passwords must be identical");
        return false;
    }
    
    return true;
}

function validateUserEdit() {
    resetValidation();
    if (document.getElementById("username").value == "") {
        showError("usernameError", "required");
        return false;
    }
    else if (document.getElementById("fname").value == "") {
        showError("fnameError", "required");
        return false;
    }
    else if (document.getElementById("lname").value == "") {
        showError("lnameError", "required");
        return false;
    }
    else if (document.getElementById("email").value == "") {
        showError("emailError", "required");
        return false;
    }
    else if (!checkEmail(document.getElementById("email").value)) {
        showError("emailError", "invalid email address");
        return false;
    }    
    else if (document.getElementById("pw").value !=
             document.getElementById("pw2").value) {
        showError("pwError", "passwords must be identical");
        return false;
    }
    
    return true;
}

function validateSelfEdit() {
    resetValidation();
    if (document.getElementById("fname").value == "") {
        showError("fnameError", "required");
        return false;
    }
    else if (document.getElementById("lname").value == "") {
        showError("lnameError", "required");
        return false;
    }
    else if (document.getElementById("email").value == "") {
        showError("emailError", "required");
        return false;
    }
    else if (!checkEmail(document.getElementById("email").value)) {
        showError("emailError", "invalid email address");
        return false;
    }
    else if (document.getElementById("pw").value !=
             document.getElementById("pw2").value) {
        showError("pwError", "passwords must be identical");
        return false;
    }
    
    return true;
}

function validateLink() {
    resetValidation();
    if (document.getElementById("linkname").value == "") {
        showError("linknameError", "required");
        return false;
    }
    else if (document.getElementById("url").value == "") {
        showError("urlError", "required");
        return false;
    }
    
    return true;
}

function validateFile() {
    resetValidation();
    if (document.getElementById("datafile").value == "") {
        showError("datafileError", "required");
        return false;
    }
    else if (document.getElementById("desc").value == "") {
        showError("descError", "required");
        return false;
    }
    
    return true;
}

function validatePasswordReset() {
    if (document.getElementById("pw_old").value == "") {
        showError("pwOldError", "required");
        return false;
    }
    else if (document.getElementById("pw").value == "") {
        showError("pwError", "required");
        return false;
    }
    else if (document.getElementById("pw").value !=
             document.getElementById("pw2").value) {
        showError("pwError", "passwords must be identical");
        return false;
    }
}

function checkEmail(email) {
    var bool = emailPattern.test(email);
    return bool;
}