function showExplanation(sUrl) {
    if (false && 
        document.getElementById &&
        document.getElementById('info') != null && 
        document.getElementById('infoframe') != null) 
    {
        document.getElementById('info').style.display = '';
        document.getElementById('infoframe').src = sUrl;
    }
    else {
        window.open(sUrl+'&popup=true', 'title', 'height=400,width=400,location=no');
    }
}

function checkBrowser()
{
    return document.getElementById;
}


function UpdateName(element, id)
{
    var currentName = element.getAttribute('name');
    var currentId = element.getAttribute('id');
    if (currentName != null && currentId != null)
    {
        if (!isNaN(currentName.substring(currentName.length - 1)))
        {
            currentName = currentName.substring(0, currentName.length - 1);
        }

        if (!isNaN(currentId.substring(currentId.length - 1)))
        {
            currentId = currentId.substring(0, currentId.length - 1);
        }
        var suffix = id > 0 ? id.toString() : "";
        element.setAttribute('name', currentName + suffix);
        element.setAttribute('id', currentId + suffix);
    }
}


function UpdateNames(sightingRow, id)
{
    var suffix = id > 0 ? id.toString() : "";
    sightingRow.setAttribute('id', 'sighting' + suffix);
    var inputs = sightingRow.getElementsByTagName('input');
    var selects = sightingRow.getElementsByTagName('select');
    var textAreas = sightingRow.getElementsByTagName('textarea');
    for (i = 0; i < selects.length; i++)
        {
            UpdateName(selects[i], id);
        }

    for (i = 0; i < inputs.length; i++)
        {
            if (inputs[i].getAttribute('name') == "removebutton" && id > 0)
                {
                    inputs[i].style.display = '';
                }
             else
            {
                UpdateName(inputs[i], id);
            }
        }
    for (i = 0; i < textAreas.length; i++)
        {
            UpdateName(textAreas[i], id);
        }
}

function GetNextId()
{
    var sightingsGrid = document.getElementById('sightingsGrid');
    var sightingsRows = sightingsGrid.childNodes;
    var id = 0;
    if (sightingsRows.length > 0)
    {
        var maxId = 0;
        for (i = 0; i < sightingsRows.length; i++)
        {
            var thisId = sightingsRows[i].id;
            if (thisId != null && thisId != "" && thisId.indexOf("sighting") > -1)
            {
                var rawId = thisId.replace("sighting", "");
                thisId = rawId != "" ? parseInt(rawId) : 0;
                if (thisId > maxId)
                {
                    maxId = thisId;
                }
            }
        }
        if (maxId >= id)
        {
            id = maxId + 1;
        }
    }
    return id;
}
function AddRow()
{
    var sightingRow = document.getElementById('sighting');
    var sightingsGrid = document.getElementById('sightingsGrid');
    var newRow = sightingRow.cloneNode(true);
    var id = GetNextId();
    UpdateNames(newRow, id);
    sightingsGrid.appendChild(newRow);
    var allRows = sightingsGrid.getElementsByTagName("table");
    for (k = 0; k < allRows.length; k++)
        {
            UpdateNames(allRows[k], k);
        }

}


function CloneSighting(oSightingRow)
{
    if (oSightingRow.parentNode)
    {
        var sightingsGrid = document.getElementById('sightingsGrid');
        var newRow = oSightingRow.parentNode.parentNode.parentNode.parentNode.cloneNode(true);
        var id = GetNextId();
        UpdateNames(newRow, id);
        sightingsGrid.appendChild(newRow);
        var allRows = sightingsGrid.getElementsByTagName("table");
        for (k = 0; k < allRows.length; k++)
        {
             UpdateNames(allRows[k], k);
        }
     }
     else
     {
         alert("Sorry, this isn't supported by your browser: \nlet me know which browser you're using and I'll try to fix it!");
     }
}

function RemoveRow(element)
{
    var sightingsGrid = document.getElementById('sightingsGrid');
    var tableToRemove = element.parentNode.parentNode.parentNode.parentNode;
    sightingsGrid.removeChild(tableToRemove);
    var allRows = sightingsGrid.getElementsByTagName("table");
    for (k = 0; k < allRows.length; k++)
        {
            UpdateNames(allRows[k], k);
        }
    
}



