// Array of banned domains
var bannedDomains = Array(
    "claritysystems.com",
    "adaptiveplanning.com"
);

// Validates that the supplied email does not use any banned domains
// "true" returned for a valid email, "false" returned for banned domain
function emailCheck(email)
{
    var valid = true;
    
    if (email.search("@") == -1 || email.search(" ") != -1)
    {
        return false;
    }
    
    var temp = email.substring(email.search("@") + 1);
    if (temp.search("@") != -1 || temp.search(".") == -1)
    {
        return false;
    }
    
    for (var x = 0; x <= bannedDomains.length; x++)
    {
        if (email.search(bannedDomains[x]) != -1 && email.search(bannedDomains[x]) != 0)
        {
            valid = false;
        }
    }
    
    return valid;
}

function checkOnSubmit()
{
    if (document.getElementById("email"))
    {
        validEmail = emailCheck(document.getElementById("email").value);
        if (validEmail)
        {
            return true;
        }
        else
        {
            alert("Invalid email.  Please use a corporate domain.");
            return false;
        }
    }
    return true;
}

// This function saves all form elements as cookies
function saveHarvestPoints()
{    
    var elementsArray = document.getElementsByTagName("input");
    var selectElementsArray = document.getElementsByTagName("select");

    saveElementsArray(elementsArray);
    saveElementsArray(selectElementsArray);    
}

function saveElementsArray(elementsArray)
{
    var errors;
    
    var theDate = new Date();
    var oneYearLater = new Date( theDate.getTime() + 31536000000 );
    var expiryDate = oneYearLater.toGMTString();
    
    for (var x = 0; x < elementsArray.length; x++)
    {
        try
        {            
            if (elementsArray[x] != null && elementsArray[x].value != null)
            {
                var formElement = elementsArray[x];  
                var formElementType = formElement.type;
                
                if  (
                    formElementType != "password" && 
                    formElementType != "submit" && 
                    formElementType != "button" && 
                    formElementType != "hidden" && 
                    formElementType != "image" && 
                    formElementType != "reset"
                    )
                    {
                        if (formElementType != "radio")
                        {
                            document.cookie = formElement.name + "=" + formElement.value + ";expires=" + expiryDate;
                        }
                        else if (formElement.checked == true)
                        {
                            document.cookie = formElement.name + "=" + formElement.id + ";expires=" + expiryDate;
                        }
                    }   
            }
        }
        catch (err)
        {    
            alert(err);
            //errors += err.description + "\n";
        }
    }
    
    if (errors != null)
    {
        alert(errors);
    }
}

// This function loads any forms elements with their associated cookies 
// (can only be used once the page has finished rendering so is called on or after "window.onload" event)
function loadHarvestPoints()
{    
    var elementsArray = document.getElementsByTagName("input");    
    var selectElementsArray = document.getElementsByTagName("select");
    
    loadElementsArray(elementsArray);
    loadElementsArray(selectElementsArray);
}

function loadElementsArray(elementsArray)
{
    var errors;
    
    for (var x = 0; x < elementsArray.length; x++)
    {
        try
        {
            if (elementsArray[x] != null)
            {
                var formElement = elementsArray[x];
                var formElementType = formElement.type;                
                var elementCookie = getcookie(formElement.name);                    
                
                if  (
                    formElementType != "password" && 
                    formElementType != "submit" && 
                    formElementType != "button" && 
                    formElementType != "hidden" && 
                    formElementType != "image" && 
                    formElementType != "reset"
                    )
                    {
                        if (formElementType != "radio")
                        {
                            formElement.value = elementCookie;
                        }
                        else if (formElementType == "radio" && formElement.id == elementCookie)
                        {
                            formElement.checked = true;
                        }
                    }
            }
        }
        catch (err)
        {    
            //alert(err);
            errors += err.description + "\n";
        }
    }
    
    if (errors != null)
    {
        alert(errors);
    }
}

// Returns a cookie's value based on the name of the cookie supplied
function getcookie(name)
{
    var prefix = name + "=";
    var cookieStartIndex = document.cookie.indexOf(prefix) ;

    if(cookieStartIndex == -1)
    {
        return "";
    }

    var cookieEndIndex = document.cookie.indexOf(";",cookieStartIndex+prefix.length) ;
    
    if(cookieEndIndex == -1)
    {
        cookieEndIndex = document.cookie.length ;        
    }
    
    return unescape(document.cookie.substring(cookieStartIndex+prefix.length,cookieEndIndex)) ;
}  

// onload event associated with the window (is run after the page is loaded and rendered)
//window.attachEvent("onload", loadHarvestPoints);

window.onload = function()
{
    loadHarvestPoints();
}

/*window.onsubmit = function()
{
    checkOnSubmit();
    saveHarvestPoints();
}*/
