//---------------------------------------------------------------------------------
// newWindow()
// Description: Opens a new browser window.
//---------------------------------------------------------------------------------
function newWindow(sPageName, sWindowName, iWidth, iHeight, bnMenus, bnResizeable, bnShowLocations, bnToolbars) {
        // build property string from parameters
        sProperties = "height=" + iHeight + ", width=" + iWidth + ",";

        if (bnMenus == true) {
                sProperties += "menubar=yes,";
        } else {
                sProperties += "menubar=no,";
        }

        if (bnResizeable == true) {
                sProperties += "resizeable=yes,";
        } else {
                sProperties += "resizeable=no,";
        }

        if (bnShowLocations == true) {
                sProperties += "location=yes,";
        } else {
                sProperties += "location=no,";
        }

        if (bnToolbars == true) {
                sProperties += "toolbar=yes";
        } else {
                sProperties += "toolbar=no";
        }

        // Open the window
        window.open(sPageName, sWindowName, sProperties);

} 

//---------------------------------------------------------------------------------
// Formats the passed value as a number with 2 decimal places
//---------------------------------------------------------------------------------
function formatAsMoney(mnt) {
        mnt -= 0;
        mnt = (Math.round(mnt * 100)) / 100;
        return (mnt == Math.floor(mnt)) ? mnt + '.00'
        : ( (mnt * 10 == Math.floor(mnt * 10)) ?
        mnt + '0' : mnt);
}

//---------------------------------------------------------------------------------
// check that field contains an something... - used in form validation
//---------------------------------------------------------------------------------

function validRequired(formField,fieldLabel) {
        var result = true;
        if (formField.value == "") {
                alert('Please enter a value for the "' + fieldLabel +'" field.');
                formField.focus();
                result = false;
        }
        return result;
}

//---------------------------------------------------------------------------------
// check that field contains an something... - used in form validation
//---------------------------------------------------------------------------------

function validNotNULL(formField,fieldLabel) {
        var result = true;
        if (formField.value == "" || formField.value == 'NULL') {
                alert('Please enter a value for the "' + fieldLabel +'" field.');
                formField.focus();
                result = false;
        }
        return result;
}

//---------------------------------------------------------------------------------
// defines digits character set - used in form validation
//---------------------------------------------------------------------------------

function allDigits(str) {
        return inValidCharSet(str,"0123456789");
}

//---------------------------------------------------------------------------------
// defines digits and dots character set (for money) - used in form validation
//---------------------------------------------------------------------------------

function allDigitsorDot(str) {
        return inValidCharSet(str,"0123456789.");
}

//---------------------------------------------------------------------------------
// parses a field for a defined char set (see allDigits above) - used in form validation
//---------------------------------------------------------------------------------

function inValidCharSet(str,charset) {
        var result = true;
        // Note: doesn't use regular expressions to avoid early Mac browser bugs
        for (var i=0;i<str.length;i++)
                if (charset.indexOf(str.substr(i,1))<0)
                {
                        result = false;
                        break;
                }
        return result;
}

//---------------------------------------------------------------------------------
// defines what an email address looks like - used in form validation
//---------------------------------------------------------------------------------

function isEmailAddr(email) {
        var result = false;
        var theStr = new String(email);
        var index = theStr.indexOf("@");
        if (index > 0)
        {
                var pindex = theStr.indexOf(".",index);
                if ((pindex > index+1) && (theStr.length > pindex+1))
        result = true;
        }
        return result;
}

//---------------------------------------------------------------------------------
// checks field for anemail address - used in form validation
//---------------------------------------------------------------------------------

function validEmail(formField,fieldLabel,required) {
        var result = true;
        if(required && !validRequired(formField,fieldLabel)) {
                result = false;
        }
        if(result) {
                if((formField.value.length > 0) && !isEmailAddr(formField.value)) {
                        alert("Please enter a complete email address in the form: yourname@yourdomain.com");
                        formField.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// checks field for minimum string length - used in form validation
//---------------------------------------------------------------------------------

function validLength(formField,fieldLabel,minlength,required) {
        var result = true;
        if(required && !validRequired(formField,fieldLabel)) {
                result = false;
        }
        if(result) {
                if(formField.value.length < minlength) {
                        alert(fieldLabel +" must be at least "+ minlength +" characters long.");
                        formField.focus();
                        result = false;
                }
        }
        return result;
}


//---------------------------------------------------------------------------------
// checks field for a number - used in form validation
//---------------------------------------------------------------------------------

function validNum(formField,fieldLabel,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                if (!allDigits(formField.value))
                {
                        alert('Please enter a number for the "' + fieldLabel +'" field.');
                        formField.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// checks field for a number, can have decimals - used in form validation
//---------------------------------------------------------------------------------

function validFloat(formField,fieldLabel,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                if (!allDigitsorDot(formField.value))
                {
                        alert('Please enter a number for the "' + fieldLabel +'" field.');
                        formField.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// checks field for a number with better error for phones - used in form validation
//---------------------------------------------------------------------------------

function validPhone(formField,fieldLabel,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                if (!allDigits(formField.value))
                {
                        alert('Please enter a number for the "' + fieldLabel +'" field. (Please use no punctuation or spaces.)');
                        formField.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// checks field for a number with better error for money (allows .'s) - used in form validation
//---------------------------------------------------------------------------------

function validMoney(formField,fieldLabel,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                if (!allDigitsorDot(formField.value))
                {
                        alert('Please enter a number for the "' + fieldLabel +'" field. (Please use no $ symbols)');
                        formField.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// checks field for a number with better error for money (allows .'s) - used in form validation
// ensures that the value of the field is less than or equal to a provided maxvalue.
//---------------------------------------------------------------------------------

function validLessEqualMoney(formField,fieldLabel,formField2,fieldLabel2,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                if (!allDigitsorDot(formField.value))
                {
                        alert('Please enter a number for the "' + fieldLabel +'" field. (Please use no $ symbols)');
                        formField.focus();
                        result = false;
                }
        }
        if (result)
        {
                if ((formField.value*1) > (formField2.value*1))
                {
                        alert('The value for "' + fieldLabel +'" can not exceed the value of ' + fieldLabel2 +'.');
                        formField.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// checks field for a integer - used in form validation
//---------------------------------------------------------------------------------

function validInt(formField,fieldLabel,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                var num = parseInt(formField.value,10);
                if (isNaN(num))
                {
                        alert('Please enter a number for the "' + fieldLabel +'" field.');
                        formField.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// check that two fields match each other - used in form validation
//---------------------------------------------------------------------------------

function validMatch(formField,formField2,fieldLabel,fieldLabel2,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                if (formField.value != formField2.value)
                {
                        alert('The values in the "' + fieldLabel +'" field and "' + fieldLabel2 +'" field do not match.');
                        formField2.focus();
                        result = false;
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// requires a field if the first field is filled out - used in form validation
//---------------------------------------------------------------------------------

function validDependant(formField,formField2,fieldLabel,fieldLabel2,required) {
        var result = true;
        if (required && !validRequired(formField,fieldLabel))
                result = false;
        if (result)
        {
                if (formField2.value != "")
                {
                        if (formField.value == "")
                        {
                                alert('The values in the "' + fieldLabel +'" field and "' + fieldLabel2 +'" are dependant upon one another.\r\n\r\nBoth must be filled in or neither filled in.');
                                formField.focus();
                                result = false;
                        }
                }
        }
        return result;
}

//---------------------------------------------------------------------------------
// prints the contents of a frame window.
//---------------------------------------------------------------------------------

function printFrame(frameName){
        parent[frameName].focus();
        parent[frameName].print();
}

//---------------------------------------------------------------------------------
// move to a new page
//---------------------------------------------------------------------------------

function moveme_notnull(link,notnull)
{
        if (notnull!="NULL" && notnull!="") {
                document.location = link;
        }
}

function moveme(link)
{
                document.location = link;
}

function moveme_parent_notnull(link,notnull)
{
        if (notnull!="NULL" && notnull!="") {
                parent.document.location = link;
        }
}

function moveme_parent(link)
{
                parent.document.location = link;
}

function moveme_opener_notnull(link,notnull)
{
        if (notnull!="NULL" && notnull!="") {
                window.opener.document.location = link;
        }
}

function moveme_opener(link)
{
                window.opener.document.location = link;
}


//---------------------------------------------------------------------------------
// Hides or displays a div section
//---------------------------------------------------------------------------------

function hideDiv(pass) {
        var divs = document.getElementsByTagName('div');
        for(i=0; i<divs.length; i++) {
                if(divs[i].id.match(pass)) { //if they are 'see' divs
                        if(document.getElementById) { // DOM3 = IE5, NS6
                                divs[i].style.visibility="hidden";// show/hide
                        } else if(document.layers) { // Netscape 4
                                document.layers[divs[i]].display = 'hidden';
                        } else { // IE 4
                                document.all.hideShow.divs[i].visibility = 'hidden';
                        }
                }
        }
}

function showDiv(pass) {
        var divs = document.getElementsByTagName('div');
        for(i=0; i<divs.length; i++) {
                if(divs[i].id.match(pass)) {
                        if(document.getElementById) {
                                divs[i].style.visibility="visible";
                        } else if(document.layers) { // Netscape 4
                                document.layers[divs[i]].display = 'visible';
                        } else { // IE 4
                                document.all.hideShow.divs[i].visibility = 'visible';
                        }
                }
        }
}

// some functions from or derived from http://javascript.about.com/library/scripts/blformvalidate.htm
