// Unobtrusive javascript for record_entry
// Jim Bacon, CEH Wallingford, 2008


window.onload = formInit;

function formInit()
{//add functionality to javascript enabled forms
 //hides and reveals controls as checkboxes are ticked.
    
    //for Larvae checkbox
    chk = document.getElementById("chkLarvae");
    txt = document.getElementById("txtNumLarvae");
    ddl = document.getElementById("ddlLarvae");
    vld = document.getElementById("vldNumLarvae");
    if (!chk.checked)
    {
        txt.style.visibility = "hidden";
        ddl.style.visibility = "hidden";
        vld.style.visibility = "hidden";
    }
    chk.textbox = txt;
    chk.dropdown = ddl;
    chk.validator = vld;
    chk.onclick = chk_Click;

    //for Pupae checkbox
    chk = document.getElementById("chkPupae");
    txt = document.getElementById("txtNumPupae");
    ddl = document.getElementById("ddlPupae");
    vld = document.getElementById("vldNumPupae");
    if (!chk.checked)
    {
        txt.style.visibility = "hidden";
        ddl.style.visibility = "hidden";
        vld.style.visibility = "hidden";
    }
    chk.textbox = txt;
    chk.dropdown = ddl;
    chk.validator = vld;
    chk.onclick = chk_Click;

    //for Adults checkbox
    chk = document.getElementById("chkAdults");
    txt = document.getElementById("txtNumAdults");
    ddl = document.getElementById("ddlAdults");
    vld = document.getElementById("vldNumAdults");
    tr = document.getElementById("trColours");
    if (!chk.checked)
    {
        txt.style.visibility = "hidden";
        ddl.style.visibility = "hidden";
        vld.style.visibility = "hidden";
        tr.style.display = "none";
    }
    chk.textbox = txt;
    chk.dropdown = ddl;
    chk.validator = vld;
    chk.tablerow = tr;
    chk.onclick = chk_Click;
    
    //for Habitat dropdown list
    ddl = document.getElementById("ddlHabitat");
    txt = document.getElementById("txtHabitat");
    vld = document.getElementById("vldOtherHabitat");
    if (ddl.value != "Other") txt.style.visibility = "hidden";
    ddl.textbox = txt;
    ddl.validator = vld;
    ddl.onchange = ddl_Change;
}

function chk_Click()
{//onClick handler for chkLarvae, chkPupae, chkAdults
    if (this.checked)
    {//make associated text box and drop down list visible
        this.textbox.style.visibility = "visible";
        this.dropdown.style.visibility = "visible";
        if (typeof this.tablerow != "undefined")this.tablerow.style.display = ""
        this.textbox.focus();
    }
    else 
    {//hide text box, drop down and validator. clear text box so it passes validation.
        this.textbox.style.visibility = "hidden";
        this.textbox.value = "";
        this.dropdown.style.visibility = "hidden";
        this.validator.style.visibility = "hidden";
        if (typeof this.tablerow != "undefined")this.tablerow.style.display = "none"
    }
}

function ddl_Change()
{//onChange handler for ddlHabitat
    if (this.value == "Other") 
    {
        this.textbox.style.visibility = "visible"
        this.textbox.focus();
    }
    else 
    {
        this.textbox.style.visibility = "hidden";
        this.validator.style.visibility = "hidden";
    }
}

function vldLocation_ClientValidate (source, arguments)
{
    gridref = document.getElementById("txtObsGridRef").value;
    sitename = document.getElementById("txtObsSiteName").value;
    postcode = document.getElementById("txtObsPostcode").value;
    
    if (gridref == "" & sitename == "" & postcode == "")
    {
        arguments.IsValid = false;
    }
    else
    {
        arguments.IsValid = true;
    }
}

function vldName_ClientValidate (source, arguments)
{
    firstname = document.getElementById("txtFirstName").value;
    lastname = document.getElementById("txtLastName").value;
    
    if (firstname == "" & lastname == "")
    {
        arguments.IsValid = false;
    }
    else
    {
        arguments.IsValid = true;
    }
}

function vldPhotos_ClientValidate (source, arguments)
{
    allowedExts  = new Array(".jpg", ".jpeg", ".png", ".gif");
    //create array of upload controls
    uplPhotos = new Array();
    uplPhotos[0] = document.getElementById("uplPhoto0");
    uplPhotos[1] = document.getElementById("uplPhoto1");
    uplPhotos[2] = document.getElementById("uplPhoto2");
    uplPhotos[3] = document.getElementById("uplPhoto3");

    allFilesOK = true;
    for (i in uplPhotos)
    {//loop through upload controls
        fileOK = false;
        if (uplPhotos[i].value != "")
        {//that have a file selected
            startExt = uplPhotos[i].value.lastIndexOf(".");
            if (startExt)
            {//with an extension
                fileExt = uplPhotos[i].value.substr(startExt);
                for (j in allowedExts)
                {//and check extension against allowed values
                    if (fileExt.toLowerCase() == allowedExts[j])
                    {//until a match is made
                        fileOK = true;
                        break;
                    }
                }
            }
            else
            {//no extension is bad
                fileOK = false;
            }

            if (!fileOK)
            {//as soon as one bad file is found we can abandon further validation
                allFilesOK = false;
                break;
            }
        }
    }
    arguments.IsValid = allFilesOK;
}

function vldFindings_ClientValidate (source, arguments)
{
    chkAdults = document.getElementById("chkAdults");
    chkLarvae = document.getElementById("chkLarvae");
    chkPupae = document.getElementById("chkPupae");
    txtNumAdults = document.getElementById("txtNumAdults");
    txtNumLarvae = document.getElementById("txtNumLarvae");
    txtNumPupae = document.getElementById("txtNumPupae");
    arguments.IsValid = true;
    if (!chkAdults.checked && !chkLarvae.checked && !chkPupae.checked)
    {
        //nothing selected
        arguments.IsValid = false;
    }
    else
    {
        //ensure if a selection is made a value is entered
        if (chkAdults.checked && txtNumAdults.value == "") arguments.IsValid = false;
        if (chkLarvae.checked && txtNumLarvae.value == "") arguments.IsValid = false;
        if (chkPupae.checked && txtNumPupae.value == "") arguments.IsValid = false;
    }
}

function vldOtherHabitat_ClientValidate (source, arguments)
{
        ddl = document.getElementById("ddlHabitat");
        txt = document.getElementById("txtHabitat");
        if (ddl.value == "Other" && txt.value == "") 
            arguments.IsValid = false;
        else
            arguments.IsValid = true;
}

