// JavaScript Document
function ToUpper(strField)
{
   strField.value = strField.value.toUpperCase();
} 

function CountDupChar(strArg, strChar)
{
    var intI
    var lngCount
    
    if(strArg.length == 0)
        return 0;
    
    for(intI=0; intI<strArg.length; ++intI)
    {
        if(strArg.CharAt[intI] == strChar)
            lngCount++;
    }
    return lngCount;
}

function ValidateForm(strFormName)
{
// Check for field names ending with * and if they're empty
// Check for tick boxes, and if any are ticked
// Check that one of Telephone/Fax/Mobile is completed
// Check that one of the tick boxes has been checked
// Fill the combo box based on tick boxes ticked
// Check that the combo box has been selected (not first option)

	if(CheckCompulsoryFields(strFormName) == false)
        return false;
    if(CountCheckedboxes(strFormName) == false)
        return false;
    if(document.forms[strFormName].elements["Preferred Contact Method"].selectedIndex == 0)
    {
        alert('Please select an option from the Preferred Contact Method drop-down box');
        return false;
    }
    if(ValidateEmail(strFormName) == false)
        return false;	

    return true;
}

function EnableTickBoxFromTextBox(strFormName, strFieldName)
{
// Used for Contact Text Box/Check Box Pairs.
// If the Text Box value length > 0, enable the paired check box

    var strCheckBoxName = "Contact by " + strFieldName;

    if(document.forms[strFormName].elements[strFieldName].value.length == 0)
    {
        document.forms[strFormName].elements[strCheckBoxName].checked = false; 
        document.forms[strFormName].elements[strCheckBoxName].disabled = true;
    }
    else
        document.forms[strFormName].elements[strCheckBoxName].disabled = false;
}

function AssembleContactOptions(strFormName)
{
    var strOptions = [];
    var intI;
    var intJ = 2; 

    document.forms[strFormName].elements["Preferred Contact Method"].options.length = 0;

    strOptions[0] = new Option("[SELECT]");
    strOptions[1] = new Option("Don't mind");

    if(document.forms[strFormName].elements["Contact by email"].checked == true)
    {
        strOptions[intJ] = new Option("E-mail");
        intJ++;
    }  
    if(document.forms[strFormName].elements["Contact by Fax"].checked == true)
    {
        strOptions[intJ] = new Option("Fax");
        intJ++;
    }
    if(document.forms[strFormName].elements["Contact by Mobile"].checked == true)
    {
        strOptions[intJ] = new Option("Mobile");
        intJ++;
    }
    if(document.forms[strFormName].elements["Contact by Phone"].checked == true)
    {
        strOptions[intJ] = new Option("Phone");
        intJ++;
    }
    if(document.forms[strFormName].elements["Contact by Address"].checked == true)
    {
        strOptions[intJ] = new Option("Post");
        intJ++;
    }

    for(intI=0; intI<intJ; intI++)
        document.forms[strFormName].elements["Preferred Contact Method"].options[intI] = 
          strOptions[intI];
}

function CountCheckedboxes(strFormName)
{
    var theForm = document.forms[strFormName];
    var strNamePrefix;
    var lngCount = 0;
    var lngChecked = 0;
    var lngContactChecked = 0;
    var intI; 

    for(intI=0; intI<theForm.elements.length; intI++)
    {
        if(theForm.elements[intI].type == "checkbox")
        {
            lngCount++;
            if(theForm.elements[intI].checked == true)
                lngChecked++;
            if(theForm.elements[intI].className == "chk")
            {
                lngCount--;
                if(theForm.elements[intI].checked == true)
                {
                    lngContactChecked++;
                    lngChecked--;
                }
            }
        }
    }
    if(lngCount > 0 && lngChecked == 0)
    {
        alert("Please tick at least one of the boxes");
        return false;
    }
    if(lngContactChecked == 0)
    {
        alert("Please tick at least one of the Contact Method boxes");
        return false;
    }
    
    return true;
}

function CheckCompulsoryFields(strFormName)
{
    var theForm = document.forms[strFormName];
    var strName;
    var intI;

    for(intI=0; intI<theForm.elements.length; intI++)
    {
        strName = theForm.elements[intI].name;
        
        if((theForm.elements[intI].className == "Required") &&
          (document.forms[strFormName].elements[strName].value.length == 0))
        {
            if(strName == "realname")
                strName = "Name";
            if(strName == "email")
                strName = "E-mail";
            alert("'" + strName + "' field cannot be blank");
            return false;
        }
    }
}

function ValidateEmail(strFormName)
{
    var strEmailAddress = document.forms[strFormName].elements["email"].value;
    var strInvalidChars = '\/\'\\ ";:?!()[]\{\}^|';
    var lngAtPos = strEmailAddress.indexOf('@',0);
	var lngDotPos = strEmailAddress.indexOf('.',0);
	var lngLength = strEmailAddress.length - 1;

    if(strEmailAddress == '')
    {
        alert('E-mail address is required');
        return false;
    }
    for(intI=0; intI<strInvalidChars.length; intI++)
    {
        if(strEmailAddress.indexOf(strInvalidChars.charAt(intI),0) > -1)
        {
            alert('E-mail address contains an invalid character');
            return false;
        }
    }
    for(intI=0; intI<strEmailAddress.length; intI++)
    {
        if(strEmailAddress.charCodeAt(intI)>127)
        {
            alert("E-mail address contains an invalid (non-ASCII) character");
            return false;
        }
    }

    if(lngAtPos == -1)
    {
        alert('E-mail address must contain an "@"');
        return false;
    }
    if(lngAtPos == 0)
    {
       alert('E-mail address must not start with "@"');
       return false;
    }
    if(lngAtPos == lngLength)
    {
       alert('E-mail address must not end with "@"');
       return false;
    }
    if(strEmailAddress.indexOf('@', lngAtPos + 1) > - 1)
    {
       alert('E-mail address must contain only one "@"');
       return false;
    }
    if(lngDotPos == 0)
    {
       alert('E-mail address must not start with "."');
       return false;
    }
    if(lngDotPos == lngLength)
    {
       alert('E-mail address must not end with "."');
       return false;
    }
    if(lngDotPos == -1)
    {
       alert('E-mail address must contain a "."');
       return false;
    }
    if(strEmailAddress.indexOf('@.',0) != -1)
    {
       alert('"." must not immediately follow "@" in e-mail address');
       return false;
    }
    if(strEmailAddress.indexOf('.@',0) != -1)
    {
       alert('"." must not immediately precede "@" in e-mail address');
       return false;
    }
    if(strEmailAddress.indexOf('..',0) != -1)
    {
       alert('Two ".." must not be adjacent in e-mail address');
       return false;
    }
    return true;
}

function WriteHeading()
{
    var strHeading

    strHeading = 
        '<img src="images/SwiftSoftwareSolutionsLogoColourBlueBlack.gif" width="100%" ' + 
        '<HR>'
    document.write(strHeading)
}

function WriteFooter()
{
    document.write(
        '<hr>' +
        '<p class="PageFooter">' +
        'To use any of our databases, you must have Microsoft Access version ' + 
        '2007, 2003 or 2000 installed on your computer. Database screens are ' + 
        'designed for a resolution of 1024 x 768 or greater.<br>' + 
        'Copyright (&#169;) Swift Software Solutions, 2009-2011. All photos ' +
        'copyright (&#169;) J K Swift, 2006-2011. E. & O. E.')
}

function CloseWindow()
{
    window.open('','_self','');
    window.close();
}

