<!--
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
// Filename        : general.js
//
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


function subscribepopup(qs){
        var ScreenWidth=window.screen.width;
        var ScreenHeight=window.screen.height;
        var movefromedge=40;
        placementx=movefromedge;
        placementy=movefromedge;
        var PopUpUrl="/subscribe.php" + qs;
        WinPop=window.open(PopUpUrl,"","width=450,height=170,toolbar=0,location=0,directories=0,status=0,scrollbars=0,menubar=0,resizable=0,left="+placementx+",top="+placementy+",screenX="+placementx+",screenY="+placementy+",");
}


// Accepts string, and size parameter as input.
// Trims string of leading and trailing spaces, and converts to uppercase
// Checks string for size and returns true is string length = size, return false otherwise

function CheckLength (string,size)
        {
         var trimstring = "";
         var start = 0;
         var stringsize = 0

          while ((start < string.length) && (string.charAt(start) == ' ')) 
          {
            ++start;
          }
          var end = string.length;
          while ((end > 0) && (string.charAt(end - 1) == ' ')) 
          {
            --end;
          }
         trimstring = string.substring(start, end);

        stringsize = trimstring.length;

        if (stringsize != size)
                { 
                return true; 
                }
                else 
                {
                return false;
                }
        }

// DEFINE VARIABLES

// whitespace characters
var whitespace = " \t\n\r";

/****************************************************************/

// Returns true if string s is empty or 
// whitespace characters only.

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

/****************************************************************/
// Checks to see if a required field is blank.  If it is, a warning
// message is displayed...

function isWhitespaceAlert(objField, FieldName)
{
        var strField = new String(objField.value);
        if (isWhitespace(strField)) {
                alert("You need to enter information for " + FieldName);
                objField.focus();
                objField.select();
                return false;
        }

        return true;
}

/****************************************************************/

// Check whether string s is empty.

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}
        
/****************************************************************/
// PURPOSE:  Check to see if the string passed in is a valid time.
//      A valid time is defined as a string which is postfixed with either
//  "PM" or "AM".  Next it checks to see if there is a colon in the
//  string.  If there is, it makes sure that at least one digit preceeds
//  it and two proceed it.

        function isTime(strTime)
        {
                var strTestTime = new String(strTime);
                strTestTime.toUpperCase();

                var bolTime = false;

                if (strTestTime.indexOf("PM",1) != -1 || strTestTime.indexOf("AM",1))
                        bolTime = true;

                if (bolTime && strTestTime.indexOf(":",0) == 0)
                        bolTime = false;

                var nColonPlace = strTestTime.indexOf(":",1);
                if (bolTime && ((parseInt(nColonPlace) + 5) < (strTestTime.length - 1) || (parseInt(nColonPlace) + 4) > (strTestTime.length - 1)))
                        bolTime = false;


                return bolTime;
        }

/****************************************************************/

function replaceAll (s, fromStr, toStr)
{
        var new_s = s;
        for (i = 0; i < 100 && new_s.indexOf (fromStr) != -1; i++)
        {
                new_s = new_s.replace (fromStr, toStr);
        }
        return new_s;
}

/****************************************************************/

/* PURPOSE:  Since we are using the single tick mark as the
        string delimiter to construct our SQL queries, a string with
        a tick mark in it will cause a SQL error.  Therefore we replace
        all "'" with "''", which eliminates the possibility of a SQL error.
*/

function sqlSafe (s)
{
        var new_s = s;
        new_s = replaceAll (new_s, "'", "|");
        new_s = replaceAll (new_s, "|", "''");
        new_s = replaceAll (new_s, "\"", "|");
        new_s = replaceAll (new_s, "|", "''");
        return new_s;
}

/****************************************************************/

function makeSafe (i)
{
        i.value = sqlSafe (i.value);
}

/****************************************************************/
// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c ... in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//

function isNotEmail (s)
{   if (isEmpty(s)) return true;
       //if (isNotEmail.arguments.length == 1) return defaultEmptyOK;
       //else {alert ("return");
           //return (isNotEmail.arguments[1] == true);}
   
    // is s whitespace?
    if (isWhitespace(s)) return true;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return true;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return true;
    else return false;
}

/****************************************************************/

// isEmailShort (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a.c ... in other words:
// * there must be at least one character before and after the .
// * the character . is required
//

function isNotEmailShort (s)
{   if (isEmpty(s)) return true;
       //if (isNotEmailShort.arguments.length == 1) return defaultEmptyOK;
       //else {alert ("return");
           //return (isNotEmail.arguments[1] == true);}
   
    // is s whitespace?
    if (isWhitespace(s)) return true;
    
    // look for @
    var i = 0;
    var sLength = s.length;

    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if (i < sLength)  return true;


}

/****************************************************************/

// Returns true if the string passed in is a valid number
//  (no alpha characters), else it displays an error message

function isNumber(objField, FieldName)
{
        var strField = new String(objField.value);
        
        if (isWhitespace(strField)) return true;

        var i = 0;

        for (i = 0; i < strField.length; i++)
                if (strField.charAt(i) < '0' || strField.charAt(i) > '9') {
                        alert(FieldName + " must be a valid numeric entry.  Please do not use commas or dollar signs or any non-numeric symbols.");
                        objField.focus();
                        return false;
                }

        return true;
}

/****************************************************************/

// Returns true if the string passed in is a valid money
//  (no alpha characters except a decimal place), 
//   else it displays an error message

function isMoney(objField, FieldName)
{
        var strField = new String(objField.value);
        
        if (isWhitespace(strField)) return true;

        var i = 0;

        for (i = 0; i < strField.length; i++)
                if ((strField.charAt(i) < '0' || strField.charAt(i) > '9') && (strField.charAt(i) != '.')) {
                        alert(FieldName + " must be a valid numeric entry.  Please do not use commas or dollar signs or any non-numeric symbols.");
                        objField.focus();
                        return false;
                }

        return true;
}


/****************************************************************/

// Right trims the string...  Useful for SQL datatypes of CHAR

function RTrim(strTrim)
{
        var str = new String(strTrim);
        var i = 0;
        var c = "";
        var endpos = 0

        for (i = str.length; i >= 0 && endpos == 0; i = i - 1) {
                c = str.charAt(i);
                if (whitespace.indexOf(c) == -1)
                        endpos = i;
        }

        return str.substring(0,endpos+1);
}

/****************************************************************/

/* PURPOSE:  Returns true if the string is a valid date number.
        A method is passed in (1 = month, 2 = day).  If the string is
        nonnumeric, false is passed back.  If the day in the date string
        is greater than 31, false is returned.  If the month is greater
        than 12, an error is returned.
*/

function isDateNumber(strNum,method)
{
        var str = new String(strNum);
        var i = 0;

        if (isNaN(parseInt(str)) || parseInt(str) < 0) return false;

        if (method == 2)
                if (parseInt(str) > 31)
                        return false;
        if (method == 1)
                if (parseInt(str) > 12)
                        return false;

        for (i = 0; i < str.length; i++)
                if (str.charAt(i) < '0' || str.charAt(i) > '9')
                        return false;


        return true;
}

/****************************************************************/

// Displays an alert box with the passed in string...

function PromptErrorMsg(Field,strError)
{
        alert("You have entered an invalid date for " + strError + ".  Please make sure your date format is in M/D/Y format.");
        Field.focus();
}

/****************************************************************/

/* PURPOSE: Checks to see if the string is a valid date.  A valid
        date is defined as any of the following:

                MM/DD/YY, MM/DD/YYYY, M/D/YY, M/D/YYYY,
                MM-DD-YY, MM-DD-YYYY, M-D-YY, M-D-YYYY
*/

function isDate(strDate,strField)
{
        var str = new String(strDate.value);

        if (isWhitespace(str)) {
                return true;
                // if the field is empty, just return true...
        }

        var i = 0, count = str.length, j = 0;
        while ((str.charAt(i) != "/" && str.charAt(i) != "-") && i < count)
                i++;

        if (i == count || i > 2) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        var addOne = false;
        if (i == 2) addOne = true;

        if (!isDateNumber(str.substring(0,i),1)) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        j = i+1;
        i = 0;

        while ((str.charAt(i+j) != "/" && str.charAt(j+i) != "-") && i+j < count)
                i++;

        if (i+j == count || i > 2) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        if (!isDateNumber(str.substring(j,i+j),2)) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        j = i+3;
        i = 0;

        if (addOne) j++;

        while (i+j < count)
                i++;


        if (i != 2 && i != 4) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        if (!isDateNumber(str.substring(j,i+j),3)) {
                PromptErrorMsg(strDate,strField);
                return false;
        }

        return true;
}

/****************************************************************/

// This function determines if the string passed in is a valid
// US zip code.  It accepts either ##### or #####-####.  If the
// string is valid, it returns true, else false.

function isZipcode(strZip)
{
        var s = new String(strZip);

        if (s.length != 5 && s.length != 10)
                // inappropriate length
                return false;


        for (var i=0; i < s.length; i++)
                if ((s.charAt(i) < '0' || s.charAt(s) > '9') && s.charAt(i) != '-')
                        return false;

        return true;
}

/****************************************************************/

// This function ensures that a field is less than or equal to the
// Length passed in.  You must call this function with the element
// name in your form (for example: "ForceLength(document.forms[0].txtElement)"
// as opposed to "ForceLength(document.forms[0].txtElement.value)"
// If the field's value is too large, an error message is displayed
// and false is returned, else true is returned.

function ForceLength(objField, nLength, strWarning)
{
        var strField = new String(objField.value);

        if (strField.length > nLength) {
                alert(strWarning);
                return false;
        } else
                return true;
}

// -->

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   If date1 is greater then date2:
//      Date1 needs to be before or equal to Date2
//   If date2 is greater then date1 or equal to:
//      True
//   If either Date1 or Date2 is in incorrect format or blank.
//      Error: Date is not filled in or date is in wrong format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) 
{
        var d1=getDateFromFormat(date1,dateformat1);
        var d2=getDateFromFormat(date2,dateformat2);
        if (d1==0 || d2==0) {
                return "Error: Date is not filled in or date is in wrong format";
                }
        else if (d1 > d2) {
                return "Date1 needs to be before or equal to Date2";
        } 
        else
                return true;

}
// -->
// -------------------------------------------------------------------
// Added: AJH 01/27/2003
// Hideshow Function is used to hide a section between <div></div> tags
// What you need to do:
//      Use a <div id="mydiv2"> specifying a id="" that will need to be referenced 
//      in the onclick, onKeyDown, and etc.
// Javascript:
//      onClick="javascript:hideshow(document.getElementById('mydiv2'))"
// -------------------------------------------------------------------
function hideshow(which){
        if (!document.getElementById)
                return
        if (which.style.display=="none")
                which.style.display=""
        else
                which.style.display="none"
        }
//-->

