//=============================================================================
// function dalert( s)
//=============================================================================
function dalert( s)
{ 
	//alert( '*' + s);
}


//=============================================================================
// function xalert( s)
//=============================================================================
function xalert( s)
{ 
	alert( '*' + s);
}


//=============================================================================
// twoDifferent( p_elem1, p_elem2)
//=============================================================================
function twoDifferent( p_elem1, p_elem2)
{
    if( p_elem1.value == "0")
        return true;
    if( p_elem2.value == "0")
        return true;
    if( p_elem1.value != p_elem2.value)
        return true;

    return false;
}
        
    
//=============================================================================
// threeDifferent( p_elem1, p_elem2, p_elem3)
//=============================================================================
function threeDifferent( p_elem1, p_elem2, p_elem3)
{
    if( !twoDifferent( p_elem1, p_elem2))
        return false;
    if( !twoDifferent( p_elem1, p_elem3))
        return false;
    if( !twoDifferent( p_elem2, p_elem3))
        return false;

    return true;
}


//=============================================================================
// Supporting Functions  Supporting Functions  Supporting Functions  Supporting
// Supporting Functions  Supporting Functions  Supporting Functions  Supporting
// Supporting Functions  Supporting Functions  Supporting Functions  Supporting
//=============================================================================

//=============================================================================
// getDaysInMonth( p_month, p_year)
//=============================================================================
function getDaysInMonth( p_month, p_year)
{
    switch(p_month)
    {
        case 8 : /* September */
        case 3 : /* April     */
        case 5 : /* June      */
        case 10: /* November */
            return 30;
        break;
        case 1: /* February   */
            if (p_year % 4 != 0)
                return 28;
            else if (p_year % 400 == 0)
                return 29;
            else if (p_year % 100 == 0)
                return 28;
            else
                return 29;
        break;
    }
    return 31;
}


//=============================================================================
// openHelp( p_htmlPage)
//=============================================================================
function openHelp() {
    msgWindow=window.open("/help/frameset.html","helpWindow","toolbar=no,width=750,height=650,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no")
    msgWindow.focus();
}


//=============================================================================
// openWindow( p_htmlPage)
//=============================================================================
function openWindow( p_fileName) {
    msgWindow=window.open(p_fileName,"displayWindow","toolbar=no,width=350,height=250,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no")
    msgWindow.focus();
}


//=============================================================================
// colorPicker( p_fileName)
//=============================================================================
function colorPicker( p_fileName) {
    var msgWindow=window.open(p_fileName,"colorPicker","toolbar=no,width=550,height=550,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
    msgWindow.focus();
}


//=============================================================================
// skipField(val, next, len)
//
// Return true if string s has digits for each character in the string.
//=============================================================================
function skipField(val, next, len)
{
    //alert( 'val:' + val + ', len:' + len);
    if(    (val.length == len)
	    && (next.value == ""))
        next.focus();
}


//=============================================================================
// parseInteger( num)
//
// This function will be like parseInt but it will NOT interpret a leading zero
// as an octal number.
//=============================================================================
function parseInteger( p_str)
{
    var i = 0;
    for( i = 0; i < p_str.length; i++)
        if( p_str.charAt( i) != '0') break;

    if( i == p_str.length)
        i--;
    var l_subStr = p_str.substring( i, p_str.length);
    return parseInt( l_subStr);
}


//=============================================================================
// function isValidDate
//=============================================================================
function isValidDate( p_mm, p_dd, p_yyyy, p_text)
{
	dalert( 'isValidDate:2: ' + p_mm + '/' + p_dd + '/' + p_yyyy);

    var l_ErrorString = "";
    var l_iMonth      = parseInteger( p_mm);
    var l_iDate       = parseInteger( p_dd);
    var l_iYear       = parseInteger( p_yyyy);
    var l_iLargestDayInMonth = 0;

    if(    (l_iMonth < 1)
        || (l_iMonth > 12))
    {
		dalert( 'isValidDate:7a' + l_iMonth);
        l_ErrorString += p_text + ' Month is out of range\r\n';
    }
    else if(    (l_iDate > (l_iLargestDayInMonth = getDaysInMonth( l_iMonth - 1, l_iYear)))
             || (l_iDate < 1))
    {
		dalert( 'isValidDate:7b' + l_iDate + ':' + l_iLargestDayInMonth);
        l_ErrorString += p_text + ' Day is out of range for month ' + l_iMonth + ', max allowed is ' + l_iLargestDayInMonth + '\r\n';
    }
    if(    (l_iYear > 99)
        && (l_iYear < 1900))
    {
		dalert( 'isValidDate:7c' + l_iYear);
        l_ErrorString += p_text + ' Year is out of range. It must be greater then 1900.\r\n';
    }

    if( l_ErrorString.length > 0)
    {
	    alert( p_text + ' has an illegal date:\r\n\r\n' + l_ErrorString);
        return false;
    }

    return true;
}


//=============================================================================
// function isValidTime
//=============================================================================
function isValidTime( p_hh, p_mi, p_text)
{
	dalert( 'isValidTime:2: ' + p_hh + ':' + p_mi);

    var l_ErrorString = "";
    var l_iHours      = parseInteger( p_hh);
    var l_iMinutes    = parseInteger( p_mi);

    if(    (l_iHours < 0)
        || (l_iHours > 23))
    {
		dalert( 'isValidTime:7a' + l_iHours);
        l_ErrorString += p_text + ' Hours are out of range\r\n';
    }
    if(    (l_iMinutes > 59)
        && (l_iMinutes < 0))
    {
		dalert( 'isValidTime:7c' + l_iMinutes);
        l_ErrorString += p_text + ' Minutes areout of range. It must be between 0 and 59.\r\n';
    }

    if( l_ErrorString.length > 0)
    {
	    alert( p_text + ' has an illegal time:\r\n\r\n' + l_ErrorString);
        return false;
    }

    return true;
}


//=============================================================================
// function isValidMMYYYY
//=============================================================================
function isValidMMYYYY( p_mm, p_yyyy, p_text)
{
	dalert( 'isValidMMYYYY:2: ' + p_mm + '/' + p_yyyy);

    var l_ErrorString = "";
    var l_iMonth      = parseInteger( p_mm);
    var l_iYear       = parseInteger( p_yyyy);
    var l_iLargestDayInMonth = 0;

    if(    (l_iMonth < 1)
        || (l_iMonth > 12))
    {
		dalert( 'isValidMMYYYY:7a' + l_iMonth);
        l_ErrorString += p_text + ' Month is out of range\r\n';
    }
    if(    (l_iYear > 99)
        && (l_iYear < 1900))
    {
		dalert( 'isValidMMYYYY:7c' + l_iYear);
        l_ErrorString += p_text + ' Year is out of range. It must be greater then 1900.\r\n';
    }

    if( l_ErrorString.length > 0)
    {
	    alert( p_text + ' has an illegal date:\r\n\r\n' + l_ErrorString);
        return false;
    }

    return true;
}


//=============================================================================
// function makeDate( p_date)
//=============================================================================
function makeDate( p_date)
{
    var l_text = "** UNEXPECTED: makeDate";

	dalert( 'makeDate:1');
    var re = new RegExp ("([0-9][0-9]|[0-9])[-/\. ]([0-9][0-9]|[0-9])[-/\. ]([0-9][0-9][0-9][0-9]|[0-9][0-9])$");
	dalert( 'makeDate:2');
	var result = re.exec( p_date);
	dalert( 'makeDate:2a');
    if( result != null)
    {
	    dalert( 'makeDate:3:passed');
        // DATE VALIDATION...
        if( !isValidDate( RegExp.$1, RegExp.$2, RegExp.$3, l_text))
            return null;

	    dalert( 'makeDate:4');
        var l_iMonth = parseInteger( RegExp.$1);
	    dalert( 'makeDate:4a:'+l_iMonth);
        var l_iDate  = parseInteger( RegExp.$2);
	    dalert( 'makeDate:4b:'+l_iDate);
        var l_iYear  = parseInteger( RegExp.$3);
	    dalert( 'makeDate:4c:'+l_iYear);

        var l_century = l_iYear - (l_iYear % 100);
	    dalert( 'makeDate:5:' + l_century);
        if(    (l_century != 1900)
            && (l_century != 2000))
        {
	        dalert( 'makeDate:6');
            alert( '** UNEXPECTED: makeDate: INVALID century: ' + l_century);
            return null;
        }

        dalert( 'makeDate:7');
        //var l_tmpDate = new Date( l_iMonth, l_iDate, l_iYear % 100);
        //var l_tmpDate = new Date( l_iYear % 100, l_iMonth, l_iDate);
        var l_tmpDate = new Date( l_iYear, l_iMonth - 1, l_iDate);
        dalert( 'makeDate:7a' + l_tmpDate);
        return l_tmpDate;
    }
    else
    {
        alert( '** UNEXPECTED: makeDate: BAD DATE: ' + p_date);
        return null;
    }

    return null;
}


//=============================================================================
// FormatNumber( num)
// AK - This function was added to format number which not consider currency.
//      It was specifically added to display points correctly on the program
//      rules page.
//=============================================================================
function FormatNumber( num)
{
   var l_str = ("" + num); 
   var l_FormattedString = "";

    while( l_str.length > 3)
    {
        if( l_FormattedString.length != 0)
            l_FormattedString = l_str.substring( l_str.length - 3, l_str.length) + "," + l_FormattedString;
        else
            l_FormattedString = l_str.substring( l_str.length - 3, l_str.length);

        l_str = l_str.substring( 0, l_str.length - 3);
    }
    
    if( l_str.length != 0)
    {
        if( l_FormattedString.length != 0)
        {
            if( l_str == "-")
                l_FormattedString = l_str + l_FormattedString;
            else
                l_FormattedString = l_str + "," + l_FormattedString;
        }
        else
            l_FormattedString = l_str;
    }
    return l_FormattedString ;
}


//=============================================================================
// function TruncateFloat( num)
//=============================================================================
function TruncateFloat( num)
{
    var l_tmpStr = ("" + num);
    var l_tmpAry = l_tmpStr.split( ".");

    if( l_tmpAry.length > 1)
        return parseInt( l_tmpAry[ 0]);

    return num;
}


//=============================================================================
// isFunctions  isFunctions  isFunctions  isFunctions  isFunctions  isFunctions
// isFunctions  isFunctions  isFunctions  isFunctions  isFunctions  isFunctions
// isFunctions  isFunctions  isFunctions  isFunctions  isFunctions  isFunctions
//=============================================================================

//=============================================================================
// function isAlphaNumeric( p_str)
//=============================================================================
function isAlphaNumeric( p_str)
{
    dalert( 'isAlphaNumeric:1');
	var re = new RegExp ("[a-zA-Z0-9]+");
    var result = re.exec( p_str);
    dalert( 'result: ' + result);
    dalert( 'result[ 0] ' + result[ 0]);
    if(    (result != null)
        && (result[ 0] == p_str))
        return true;

    return false;
}


//=============================================================================
// function isNumeric( p_str)
//=============================================================================
function isNumeric( p_str)
{
    dalert( 'isNumeric:1');
	var re = new RegExp ("[0-9]+");
    var result = re.exec( p_str);
    dalert( 'result: ' + result);
    if( result != null)
        dalert( 'result[ 0] ' + result[ 0]);
    if(    (result != null)
        && (result[ 0] == p_str))
        return true;

    return false;
}


//=============================================================================
// isFloat (s /* string */)
//
// Return true if string s has digits for each character in the string.
//=============================================================================
function isFloat (s)
{
	if( s.indexOf( ".") != -1)
	{
		var l_ary = s.split( ".");
		if( l_ary.length > 2)
			return false;

		return(    (isNumeric( l_ary[ 0]))
		        && (isNumeric( l_ary[ 1])));
	}

	return isNumeric( s); 
}


//=============================================================================
// isMoney (s /* string */)
//
// Return true if string s has digits for each character in the string.
//=============================================================================
function isMoney (s)
{
    dalert( 'isMoney:1');
	if( s.indexOf( ".") != -1)
	{
        dalert( 'isMoney:2');
		var l_ary = s.split( ".");
		if( l_ary.length > 2)
        {
            dalert( 'isMoney:3');
			return false;
        }
        if( l_ary.length == 1)
        {
            dalert( 'isMoney:4');
            return isNumeric( l_ary[ 0]);
        }
        else        
        {
            dalert( 'isMoney:5');
    		return(    (isNumeric( l_ary[ 0]))
    		        && (isNumeric( l_ary[ 1]))
                    && (l_ary[ 1].length < 3)
                  );
        }
	}

	return isNumeric( s); 
}


//=============================================================================
// isPercent (s /* string */)
//
// Return true if string s has digits for each character in the string.
//=============================================================================
function isPercent (s)
{
    dalert( 'isPercent:1');
    
    if( !isFloat( s))
    {
        dalert( 'isPercent:2');
        return false;
    }
            
    var l_ary = s.split( ".");
            
    if( l_ary[ 0].length > 3)
    {
        dalert( 'isPercent:3');
        return false;
    }
    else if (    (l_ary[ 0].length == 3)
              && (l_ary[ 0] != "100"))
    {
        dalert( 'isPercent:4');
        return false;
    }

    //=========================================================================
    // Now we know that the left side is at most 100
    //=========================================================================

    //=========================================================================
    // If there is no right side, then it is a valid percentage
    //=========================================================================
    if( l_ary.length == 1)
    {
        dalert( 'isPercent:5');
        return true;
    }
        
    if(    (l_ary[ 0] == "100")
        && (parseInteger( l_ary[ 1]) != 0))
    {
        dalert( 'isPercent:6');
        return false
    }
    
    dalert( 'isPercent:END');
    return true;    
}


//=============================================================================
// Element Validation  Element Validation  Element Validation  Element Validati
// Element Validation  Element Validation  Element Validation  Element Validati
// Element Validation  Element Validation  Element Validation  Element Validati
// CheckElemAlphaNumberic
// CheckElemNumberic
// CheckElemText
// CheckElemLike
// CheckElemFilledInt
// CheckElemFloat
// CheckElemDate
// CheckElemTime
// CheckElemDateTime
// CheckElemInt
// CheckElemLength
// CheckElemList
// CheckElemTextarea
// CheckElemRadio
// CheckElemPhone
//=============================================================================

//=============================================================================
// function CheckElemAlpahNumeric( p_elem, p_name, p_required)
//=============================================================================
function CheckElemAlpahNumeric( p_elem, p_name, p_required)
{
	dalert( 'CheckElemAlpahNumeric:1');
    var l_required = p_required;
    if( p_required == null)
        l_required = false;
    
	dalert( 'CheckElemAlpahNumeric:2:' + l_required);
	dalert( 'CheckElemAlpahNumeric:2a:' + p_elem.value);
	dalert( 'CheckElemAlpahNumeric:2b:' + p_elem.value.length);
    if( p_elem.value == "")
    {
	    dalert( 'CheckElemAlpahNumeric:3');
        if( l_required)
        {
            alert( p_name + ' is a required field');
            p_elem.focus();
            p_elem.select();
        }
	    dalert( 'CheckElemAlpahNumeric:4');
        return !l_required;
    }
    
    dalert( 'CheckElemAlpahNumeric:5');
    if( !isAlphaNumeric( p_elem.value))
    {
        alert( p_name + ' must contain only letters and digits');
        p_elem.focus();
        p_elem.select();
        return false;
    }
    dalert( 'CheckElemAlpahNumeric:6');
    
    return true;
}


//=============================================================================
// function CheckElemNumeric( p_elem, p_name, p_required)
//=============================================================================
function CheckElemNumeric( p_elem, p_name, p_required)
{
	dalert( 'CheckElemNumeric:1');
    var l_required = p_required;
    if( p_required == null)
        l_required = false;
    
	dalert( 'CheckElemNumeric:2:' + l_required);
	dalert( 'CheckElemNumeric:2a:' + p_elem.value);
	dalert( 'CheckElemNumeric:2b:' + p_elem.value.length);
    if( p_elem.value == "")
    {
	    dalert( 'CheckElemNumeric:3');
        if( l_required)
        {
            alert( p_name + ' is a required field');
            p_elem.focus();
            p_elem.select();
        }
	    dalert( 'CheckElemNumeric:4');
        return !l_required;
    }
    
    dalert( 'CheckElemNumeric:5');
    if( !isNumeric( p_elem.value))
    {
        alert( p_name + ' must contain only digits 0 - 9');
        p_elem.focus();
        p_elem.select();
        return false;
    }
    dalert( 'CheckElemNumeric:6');
    
    return true;
}


//=============================================================================
// function CheckElemText( p_elem, p_elem_text)
//=============================================================================
function CheckElemText( p_elem, p_elem_text)
{
	dalert( 'CheckElemText:1');
	if( p_elem.value == "")
	{
		alert( p_elem_text + ' is a required field');
		p_elem.focus();
		p_elem.select();
		dalert( 'CheckElemText:2');
		return false;
	}

	dalert( 'CheckElemText:3');
	return true;
}


//=============================================================================
// function CheckElemLike( p_elem, p_elem_vis, p_elem_radio, p_elem_text, p_required)
//=============================================================================
function CheckElemLike( p_elem, p_elem_vis, p_elem_radio, p_elem_text, p_required)
{
    dalert( 'CheckElemLike:1');
    if(    (p_required)
        && (!CheckElemText( p_elem_vis, p_elem_text)))
        return false;
    dalert( 'CheckElemLike:2');
    if(    (p_elem_radio[ 0].checked)
        && (p_elem_vis.value.length > 0))
    {
        // Contains
        dalert( 'CheckElemLike:3');
        p_elem.value = '%' + p_elem_vis.value + '%';
    }
    else
    {
        // Contains
        dalert( 'CheckElemLike:3');
        p_elem.value = p_elem_vis.value + '%';
    }

    //else if(    (p_elem_radio[ 1].checked)
    //         && (p_elem_vis.value.length > 0))
    //{
    //    // Contains
    //    dalert( 'CheckElemLike:3');
    //    p_elem.value = p_elem_vis.value + '%';
    //}
    //else
    //{
    //    dalert( 'CheckElemLike:3a');
    //    p_elem.value = p_elem_vis.value;
    //}
    
    dalert( 'CheckElemLike:4');
	return true;
}


//=============================================================================
// function CheckElemCheckbox( p_elem, p_elem_vis, p_elem_radio, p_elem_text, p_required)
//=============================================================================
function CheckElemCheckbox( p_elem, p_hidden_elem)
{
    dalert( 'CheckElemCheckbox:1');
    if( p_elem.checked)
    {
        dalert( 'CheckElemCheckbox:2');
        p_hidden_elem.value = "T";
    }
    else
    {
        dalert( 'CheckElemCheckbox:3');
        p_hidden_elem.value = "F";
    }
    dalert( 'CheckElemCheckbox:4');
	return true;
}


//=============================================================================
// function CheckElemFilledInt( p_elem, p_elem_text, p_size, p_required)
//=============================================================================
function CheckElemFilledInt( p_elem, p_elem_text, p_size, p_required)
{
	dalert( 'CheckElemFilledInt:1');

    if(    (p_elem.value == "")
        && (p_required == false))
    {
	    dalert( 'CheckElemFilledInt:2');
        return true;
    }

	dalert( 'CheckElemFilledInt:3');
    if( !CheckElemNumeric( p_elem, p_elem_text, p_required))
    {
	    dalert( 'CheckElemFilledInt:4');
        return false;
    }

	dalert( 'CheckElemFilledInt:5');
	if( p_elem.value.length != p_size)
	{
		alert( p_elem_text + ' need ' + p_size + ' digits entered to be valid.');
		p_elem.focus();
		p_elem.select();
		dalert( 'CheckElemFilledInt:6');
		return false;
	}

	dalert( 'CheckElemFilledInt:7');
	return true;
}


//=============================================================================
// function CheckElemFloat( p_elem, p_elem_text, p_required)
//=============================================================================
function CheckElemFloat( p_elem, p_elem_text, p_required)
{
	dalert( 'CheckElemFloat:1');

    if(    (p_elem.value == "")
        && (p_required == false))
    {
	    dalert( 'CheckElemFloat:2');
        return true;
    }

	dalert( 'CheckElemFloat:3');
	if( !isFloat( p_elem.value))
	{
		alert( p_elem_text + ' is not a valid decimal number.');
		dalert( 'CheckElemFloat:3a');
        p_elem.focus();
        p_elem.select();
		return false;
	}
	dalert( 'CheckElemFloat:4');
	return true;
}


//=============================================================================
// function CheckElemCurrency( p_elem, p_elem_text, p_required)
//=============================================================================
function CheckElemCurrency( p_elem, p_elem_text, p_required)
{
	dalert( 'CheckElemCurrency:1');
    if( !CheckElemFloat( p_elem, p_elem_text, p_required))
        return false;
        
    
    if(    (p_elem.value == "")
        && (p_required == false))
    {
	    dalert( 'CheckElemCurrency:2');
        return true;
    }

	dalert( 'CheckElemCurrency:3');
	if( !isCurrency( p_elem.value))
	{
		alert( p_elem_text + ' is not a valid decimal number.');
		dalert( 'CheckElemCurrency:3a');
        p_elem.focus();
        p_elem.select();
		return false;
	}
	dalert( 'CheckElemCurrency:4');
	return true;
}


//=============================================================================
// function CheckElemFMoney( p_elem, p_elem_text, p_required, p_size)
//=============================================================================
function CheckElemMoney( p_elem, p_elem_text, p_required, p_size)
{
	dalert( 'CheckElemMoney:1');

    if(    (p_elem.value == "")
        && (p_required == false))
    {
	    dalert( 'CheckElemMoney:2');
        return true;
    }

	dalert( 'CheckElemMoney:3');
	if( !isMoney( p_elem.value))
	{
		alert( p_elem_text + ' is not a valid input for money.');
        p_elem.focus();
        p_elem.select();
		dalert( 'CheckElemMoney:3a');
		return false;
	}
	dalert( 'CheckElemMoney:4');
	return true;
}


//=============================================================================
// function CheckElemFPercent( p_elem, p_elem_text, p_required, p_size)
//=============================================================================
function CheckElemPercent( p_elem, p_elem_text, p_required, p_size)
{
	dalert( 'CheckElemPercent:1');

    if(    (p_elem.value == "")
        && (p_required == false))
    {
	    dalert( 'CheckElemPercent:2');
        return true;
    }

	dalert( 'CheckElemPercent:3');
	if( !isPercent( p_elem.value))
	{
		alert( p_elem_text + ' is not a valid percentage.');
		dalert( 'CheckElemPercent:3a');
        p_elem.focus();
        p_elem.select();
		return false;
	}
	dalert( 'CheckElemPercent:4');
	return true;
}


//=============================================================================
// function CheckElemDate( p_elem, p_text, p_required, p_focus_field)
//=============================================================================
function CheckElemDate( p_elem, p_text, p_required)
{
	dalert( 'validateDate:0');
	if( p_required == null)
		p_required = false;
	dalert( 'validateDate:1');

	if( p_elem.value.length == 0)
    {
	    dalert( 'validateDate:2');
        if( p_required)
    	{
    		dalert( 'validateDate:3');
    		alert( p_text + ' must have a date entered');
    		p_elem.focus();
    		p_elem.select();
    		return false;
    	}
        else
        {
    		dalert( 'validateDate:4');
            return true;
        }
    }
	dalert( 'validateDate:5');

    var re = new RegExp ("([0-9][0-9]|[0-9])[-/\. ]([0-9][0-9]|[0-9])[-/\. ]([0-9][0-9][0-9][0-9]|[0-9][0-9])$");
	dalert( 'validateDate:6');
	var result = re.exec( p_elem.value);
    if( result != null)
    {
        dalert( 'validateDate:7:passed');

        // DATE VALIDATION...
        if( !isValidDate( RegExp.$1, RegExp.$2, RegExp.$3, p_text))
            return false;

        var l_date = RegExp.$1 + "/" + RegExp.$2 + "/" + RegExp.$3;
        p_elem.value = l_date;
    }
    else
    {
        alert( p_text + ' is not a legal date format\r\n'
             + '\r\n'
             + 'Date Input Formats are month/day/year:\r\n'
             + '\r\n'
             + '10/12/2002\r\n'
             + '1/1/99\r\n'
             + '01-01-86\r\n'
             + '1.1.1986\r\n'
             );
        p_elem.focus();
        p_elem.select();
        return false;
    }

    dalert( 'validateDate:9:');
	return true;
}


//=============================================================================
// function CheckCCExpDate( p_elem, p_text, p_required, p_focus_field)
//=============================================================================
function CheckCCExpDate( p_elem, p_text, p_required)
{
	dalert( 'CheckCCExpDate:0');
	if( p_required == null)
		p_required = false;
	dalert( 'CheckCCExpDate:1');

	if( p_elem.value.length == 0)
    {
	    dalert( 'CheckCCExpDate:2');
        if( p_required)
    	{
    		dalert( 'CheckCCExpDate:3');
    		alert( p_text + ' must have a date entered');
    		p_elem.focus();
    		p_elem.select();
    		return false;
    	}
        else
        {
    		dalert( 'CheckCCExpDate:4');
            return true;
        }
    }
	dalert( 'CheckCCExpDate:5');

    var re = new RegExp ("([0-9][0-9]|[0-9])[/\\\\\\.]([0-9][0-9][0-9][0-9]|[0-9][0-9])$");
	dalert( 'CheckCCExpDate:6');
	var result = re.exec( p_elem.value);
    if( result != null)
    {
        dalert( 'CheckCCExpDate:7:passed');

        // DATE VALIDATION...
        if( !isValidMMYYYY( RegExp.$1, RegExp.$2, p_text))
            return false;

        var l_date = RegExp.$1 + "\\" + RegExp.$2;
        p_elem.value = l_date;
    }
    else
    {
        alert( p_text + ' is not a legal credit card expiration date format\r\n'
             + '\r\n'
             + 'Date Input Formats are MM\\YYYY:\r\n'
             + '\r\n'
             + '10\\2002\r\n'
             + '12/2004\r\n'
             + '1\\1999\r\n'
             + '4.2001\r\n'
             );
        p_elem.focus();
        p_elem.select();
        return false;
    }

    dalert( 'CheckCCExpDate:9:');
	return true;
}


//=============================================================================
// function CheckElemTime( p_elem, p_text, p_required, p_focus_field)
//=============================================================================
function CheckElemTime( p_elem, p_text, p_required, p_focus_field)
{
	dalert( 'CheckElemTime:0');
	if( p_required == null)
		p_required = false;
	dalert( 'CheckElemTime:1');

	if( p_elem.value.length == 0)
    {
	    dalert( 'CheckElemTime:2');
        if( p_required)
    	{
    		dalert( 'CheckElemTime:3');
    		alert( p_text + ' must have a Time entered');
    		p_elem.focus();
    		p_elem.select();
    		return false;
    	}
        else
        {
    		dalert( 'CheckElemTime:4');
            return true;
        }
    }
	dalert( 'CheckElemTime:5');

    var re = new RegExp ("([0-9][0-9]|[0-9])[:]([0-9][0-9]|[0-9])$");
	dalert( 'CheckElemTime:6');
	var result = re.exec( p_elem.value);
    if( result != null)
    {
        dalert( 'CheckElemTime:7:passed');

        // DATE VALIDATION...
        if( !isValidTime( RegExp.$1, RegExp.$2, p_text))
            return false;

        var l_Time = RegExp.$1 + ":" + RegExp.$2;
        p_elem.value = l_Time;
    }
    else
    {
        alert( p_text + ' is not a legal time format\r\n'
             + '\r\n'
             + 'Time Input Formats are month/day/year:\r\n'
             + '\r\n'
             + '22:20\r\n'
             + '11:02\r\n'
             );
        p_focus_field.focus();
        p_focus_field.select();
        return false;
    }

    dalert( 'CheckElemTime:9:');
	return true;
}


//=============================================================================
// function CheckElemDateTime( p_elem, p_elem_text, p_required, p_focus_field)
//=============================================================================
function CheckElemDateTime( p_elem, p_elem_text, p_required, p_focus_field)
{
	alert( 'CheckElemDateTime:1 NOT IMEPELEMENTED');
}


//=============================================================================
// function CheckElemInt( p_elem, p_elem_text, p_required)
//=============================================================================
function CheckElemInt( p_elem, p_elem_text, p_required)
{
	dalert( 'CheckElemInt:1');

    if(    (p_elem.value == "")
        && (p_required == false))
    {
	    dalert( 'CheckElemInt:2');
        return true;
    }

	dalert( 'CheckElemInt:3');
    if( !CheckElemNumeric( p_elem, p_elem_text, p_required))
    {
	    dalert( 'CheckElemInt:4');
        return false;
    }

	dalert( 'CheckElemInt:5');
	return true;
}


//=============================================================================
// function CheckElemIntBound( p_elem, p_elem_text, p_required, p_min, p_max)
//=============================================================================
function CheckElemIntBound( p_elem, p_elem_text, p_required, p_min, p_max, p_no_of_decimal)
{
	var l_bResult = false;
	
    if (p_no_of_decimal == "0") {
    	l_bResult = CheckElemInt( p_elem, p_elem_text, p_required);
    } else {
    	l_bResult = CheckElemFloat( p_elem, p_elem_text, p_required);
    }
    
    
    	
    if( l_bResult == false)
        return false;
        
    var l_iValue = parseInteger( p_elem.value);
    if(    (p_min != -1)
        && (l_iValue < p_min))
    {
        alert( p_elem_text + " needs to be greater then or equal to " + p_min);
        p_elem.focus();
        p_elem.select();
        return false;
    }
    
    if(    (p_max != -1)
        && (l_iValue > p_max))
    {
        alert( p_elem_text + " needs to be less then or equal to " + p_max);
        p_elem.focus();
        p_elem.select();
        return false;
    }
    
	return true;
}


//=============================================================================
// function CheckElemLength( p_elem, p_elem_text, p_len)
//=============================================================================
function CheckElemLength( p_elem, p_elem_text, p_len)
{
    dalert( 'CheckElemLength:1');
    if( p_elem.value.length != p_len)
    {
        dalert( 'CheckElemLength:2');
        alert( p_elem_text + ' must be of length ' + p_len);
        p_elem.value = "";
        p_elem.focus();
        p_elem.select();
        return false;
    }
    dalert( 'CheckElemLength:3');

    return true;
}


//=============================================================================
// function CheckElemList( p_elem, p_elem_text, p_not_picked)
//=============================================================================
function CheckElemList( p_elem, p_elem_text, p_not_picked)
{
	dalert( 'CheckElemList:1');

    //if( p_not_picked == null)
    //    p_not_picked = '0';

	if( p_elem.value == p_not_picked)
	{
		alert( p_elem_text + ' is a required field');
		p_elem.focus();
		return false;
	}

	dalert( 'CheckElemList:2');
	return true;
}


//=============================================================================
// function CheckElemTextarea( p_elem, p_elem_text, p_size, p_required)
//=============================================================================
function CheckElemTextarea( p_elem, p_elem_text, p_size, p_required)
{
	dalert( 'CheckElemTextarea:1');

    if( p_required == null)
        p_required = false;

    if(    (p_required)
        && (p_elem.value.length == 0))
    {
		alert( p_elem_text + ' is a required field');
		p_elem.focus();
		p_elem.select();
		return false;
    }

	if( p_elem.value.length > p_size)
	{
		alert( p_elem_text + ' has to many characters.\r\nThe maximum size allowed is ' + p_size);
        p_elem.value = p_elem.value.substring( 0, p_size);
		p_elem.focus();
		p_elem.select();
		return false;
	}

	dalert( 'CheckElemTextarea:2');
	return true;
}


//=============================================================================
// function CheckElemRadio( p_radio_elem, p_text)
//=============================================================================
function CheckElemRadio( p_radio_elem, p_text)
{
	dalert( 'CheckElemRadio:1');
	for( var i = 0; i < p_radio_elem.length; i++)
	{
		dalert( 'CheckElemRadio:2');
		if( p_radio_elem[ i].checked)
		{
			dalert( 'CheckElemRadio:3');
			return true;
		}
	}
	dalert( 'CheckElemRadio:4');
	alert( p_text + ' is a required field');
	dalert( 'CheckElemRadio:4a');
	//p_radio_elem.focus();
	dalert( 'CheckElemRadio:4b');
	return false;
}



//=============================================================================
// function CheckElemPhone( p_phone_elem, p_text, p_required)
//=============================================================================
function CheckElemPhone( p_phone_elem, p_text, p_required)
{
	dalert( 'CheckElemPhone:0');
	if( p_required == null)
		p_required = false;
	dalert( 'CheckElemPhone:1');

	if( p_phone_elem.value.length == 0)
    {
	    dalert( 'CheckElemPhone:2');
        if( p_required)
    	{
    		dalert( 'CheckElemPhone:3');
    		alert( p_text + ' is a required field');
    		p_phone_elem.focus();
    		p_phone_elem.select();
    		return false;
    	}
        else
        {
    		dalert( 'CheckElemPhone:4');
            return true;
        }
    }
	dalert( 'CheckElemPhone:5');

    var re = new RegExp ("[\(]?([0-9][0-9][0-9])[\)\. -]*([0-9][0-9][0-9])[-\. ]*([0-9][0-9][0-9][0-9])(.*)");
	dalert( 'CheckElemPhone:6');
	var result = re.exec( p_phone_elem.value);
    if(    (result != null)
        && (    (RegExp.$4 == null)
             || (RegExp.$4 == "")
           )
       )
    {
        dalert( 'CheckElemPhone:7:passed');
        var l_phone = RegExp.$1 + RegExp.$2 + RegExp.$3;
        p_phone_elem.value = l_phone;
    }
    else
    {
        alert( p_text + ' must have 10 digits\r\n'
             + '\r\n'
             + 'Phone Input Formats:\r\n'
             + '\r\n'
             + '(987) 654-3210\r\n'
             + '987-654-3210\r\n'
             + '987.654.3210\r\n'
             + '9876543210\r\n'
             );
        p_phone_elem.focus();
        p_phone_elem.select();
        return false;
    }

    dalert( 'CheckElemPhone:9:');
	return true;
}


//=============================================================================
// function dateCompare( p_date1, p_date2)
//
// This function assumes that the dates are arlready valid date strings: MM/DD/YYYY
//
// Return Value:
//
// -1 : p_date1 is less then p_date2
// 0  : p_date1 equals p_date2
// 1  : p_date1 is greater then p_date2
//=============================================================================
function dateCompare( p_date1, p_date2)
{
    dalert( 'dateCompare:1');
    var l_date1 = makeDate( p_date1);
    dalert( 'dateCompare:2');
    var l_date2 = makeDate( p_date2);

    dalert( 'dateCompare:3:'+ l_date1 + ":" + l_date2 + " result: " + (l_date1 < l_date2));
    if( l_date1 < l_date2)
        return -1;

    dalert( 'dateCompare:4:'+ l_date1 + ":" + l_date2 + " result: " + (l_date2 < l_date1));
    if( l_date2 < l_date1)
        return 1;

    dalert( 'dateCompare:5');
    return 0;
}


//=============================================================================
// function CheckElemDateBetween( p_elem, p_text, p_required, p_begin_range, p_end_range)
//=============================================================================
function CheckElemDateBetween( p_elem, p_text, p_required, p_begin_range, p_end_range)
{
    dalert( 'CheckElemDateBetween:1');
    if( !CheckElemDate( p_elem, p_text, p_required))
        return false;

    if(    (p_elem.value == "")
        && (p_required == false))
        return true;

    dalert( 'CheckElemDateBetween:2');
    var l_entered_date = makeDate( p_elem.value);
    dalert( 'CheckElemDateBetween:3');
    var l_begin_date   = makeDate( p_begin_range);
    dalert( 'CheckElemDateBetween:4');
    var l_end_date     = makeDate( p_end_range);
    dalert( 'CheckElemDateBetween:5');

    if(    (l_begin_date != null)
        && (l_end_date   != null))
    {
        dalert( 'CheckElemDateBetween:6');
        if(    (l_entered_date.getTime() < l_begin_date.getTime())
            || (l_entered_date.getTime() > l_end_date.getTime()))
        {
            dalert( 'CheckElemDateBetween:7');
            alert( p_text + ' must have the date ' + p_elem.value + ' between dates ' + p_begin_range + ' and ' + p_end_range);
            p_elem.focus();
            p_elem.select();
            return false;
        }
        else
        {
            dalert( 'CheckElemDateBetween:8');
            return true;
        }
    }
    else
        alert( '** UNEXPECTED: CheckElemDateBetween: BAD DATE(s)');

    return false;
}


//=============================================================================
// function CheckElemEMail( p_elem, p_text, p_required)
//=============================================================================
function CheckElemEMail( p_elem, p_text, p_required)
{
    dalert( 'checkEMail:1');
    if( p_required == null)
        p_required = false;

    dalert( 'checkEMail:2');
    if( p_elem.value == "")
    {
        dalert( 'checkEMail:3');
        if( p_required)
        {
            alert( p_text + ' is a required field');
            p_elem.value = "";
            p_elem.focus();
            p_elem.select();
            return false;
        }
        else
        {
            dalert( 'checkEMail:4');
            return true;
        }
    }

    dalert( 'checkEMail:5');
    var re = /^[A-Za-z0-9]+[A-Za-z0-9_\.\-]*[\x40][A-Za-z0-9]+[A-Za-z0-9_\-]*[\.][A-Za-z0-9]+[A-Za-z0-9_\.\-]*/;
	var result = re.exec( p_elem.value);
    if(    (result != null)
        && (result[ 0] == p_elem.value))
    {
        dalert( 'checkEMail:6');
        return true;
    }

    alert( p_text + ' is not a proper email address\r\n'
         + 'such as username@companydomain.publicdomain\r\n\r\n'
         + 'Examples:\r\n'
		 + 'johndoe@macrosoft.com\r\n'
		 + 'johndoe@mycompany.com\r\n'
         );
    return false;
}


//=============================================================================
// Report Navigation  Report Navigation  Report Navigation  Report Navigation  
// Report Navigation  Report Navigation  Report Navigation  Report Navigation  
// Report Navigation  Report Navigation  Report Navigation  Report Navigation  
//=============================================================================

//=============================================================================
// function prevSelected( p_elem, p_maxrows)
//=============================================================================
var l_bButtonPressed = false;

function prevSelected( p_elem, p_maxrows)
{
    //=========================================================================
    // Only allow one button to be pushed
    //=========================================================================
    if( l_bButtonPressed )
        return true;
    l_bButtonPressed = true;

    //=========================================================================
    // Since the next position is pointed 15 records AFTER this position, we
    // need to decrement it p_mx_ros to get it to point to the current first 
    // records, and another 15 to point to the proper record.
    //=========================================================================
	dalert( 'prevSelected:1');
	var l_CurrentStart = parseInt( p_elem.value);
	dalert( 'prevSelected:2:' + l_CurrentStart);
	var l_NewStart = l_CurrentStart - 2 * p_maxrows;
    if( l_NewStart < 1)
        l_NewStart = 1;
	dalert( 'prevSelected:3:' + l_NewStart);
	p_elem.value = l_NewStart;
	dalert( 'prevSelected:4');

	return true;
}


//=============================================================================
// function browseSchools( p_fieldName)
//=============================================================================
function browseSchools( p_fieldName,p_seqnum)
{
    var l_url = "choose_school_1.cfm?field=" + p_fieldName + "&field2=" + p_seqnum;
    var l_win = "_schools";
    msgWindow = window.open( l_url, l_win, "toolbar=no,width=550,height=400,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
}

//=============================================================================
// function browseSuppliers( p_fieldName)
//=============================================================================
function browseSuppliers( p_fieldName)
{
    var l_url = "../../openplus/displays/choose_supplier_1.cfm?field=" + p_fieldName;
    var l_win = "_Suppliers";
    msgWindow = window.open( l_url, l_win, "toolbar=no,width=550,height=400,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
}
//=============================================================================
// function browseInstr( p_fieldValue)
//=============================================================================
function browseInstr()
{
    var l_var = document.form2.shiptocode.value;
    var l_url = "../../openplus/displays/ship_to_instr.cfm?key=" + l_var;
    var l_win = "_Instruction";
    msgWindow = window.open( l_url, l_win, "toolbar=no,width=550,height=400,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
}
//=============================================================================
// function browsepo( p_fieldValue)
//=============================================================================
function browsepo(p_fieldValue)
{
	var l_var = p_fieldValue;	
	//alert(l_var);
    var l_url = "../../openplus/displays/dsp_webopg40reviewpo.cfm?key=" + l_var; 
    var l_win = "_Review";
    msgWindow = window.open( l_url, l_win, "toolbar=no,width=550,height=400,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");	
}
//=============================================================================
// function locpo( p_fieldValue)
//=============================================================================
function locpo(p_fieldValue)
{
	var l_var = p_fieldValue;
	//alert(l_var);
    var l_url = "../../empower/fusebox.cfm?fuseaction=WEBOPG41&key=" + l_var;	
	window.location = l_url;
}
//=============================================================================
// function previewPage( p_url)
//=============================================================================
var g_win_ary = new Object;

function previewPage( p_url, p_win_name)
{
    previewPage2( p_url, p_win_name);

//    var l_re  = new RegExp( '\%', 'gi');
//    var l_date = new Date ();
//  //var l_win = p_win_name.replace( l_re, ''); // + l_date.getYear() + l_date.getMonth() + l_date.getSeconds();
//    var l_win = "empower_online_form";
//    if( g_win_ary[ l_win] == null)
//        g_win_ary[ l_win] = window.open( p_url, l_win, "toolbar=no,width=750,height=550,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
//    //else
//    //    alert( 'You already have one form open.\r\n\r\nYou must complete this to begin another one.');
//    g_win_ary[ l_win].focus();
}

var g_win_ary2 = new Object;

function previewPage2( p_url, p_win_name)
{
    var l_re  = new RegExp( '\%', 'gi');
    var l_date = new Date ();
    var l_win = "empower_online_form";
    g_win_ary2[ l_win] = window.open( p_url, l_win, "toolbar=no,width=750,height=550,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
    g_win_ary2[ l_win].focus();	
}

//=============================================================================
// function selectElement()
//=============================================================================
function selectElement()
{
    var l_url = "choose_element_1.cfm";
    var l_win = "_window";
    msgWindow = window.open( l_url, l_win, "toolbar=no,width=550,height=550,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
}


function getBrowserStats( p_debug)
{
    this.isMac   = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
    this.NS4     = (document.layers) ? true : false;
    this.IEmac   = ((document.all)&&(isMac)) ? true : false;
    this.IE4plus = (document.all) ? true : false;
    this.IE4     = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;
    this.IE5     = ((document.all)&&(navigator.appVersion.indexOf("MSIE 5.")!=-1)) ? true : false;
    this.IE6     = ((document.all)&&(navigator.appVersion.indexOf("MSIE 6.")!=-1)) ? true : false;
    this.ver4    = (NS4 || IE4plus) ? true : false;
    this.NS6     = (!document.layers) && (navigator.userAgent.indexOf('Netscape')!=-1)?true:false;

    this.IE5plus = IE5 || IE6;
    this.IEMajor = 0;

    if (IE4plus)
    {
    	var start = navigator.appVersion.indexOf("MSIE");
	    var end   = navigator.appVersion.indexOf(".",start);
        this.IEMajor   = parseInt(navigator.appVersion.substring(start+5,end));
        this.IE5plus   = (IEMajor>=5) ? true : false;
    }

    this.IE5plus = IE5 || IE6;
    this.IEMajor = 0;

    if( p_debug)
    {
        var l_alert = "isMac   = " + this.isMac   + "\r\n"
                    + "NS4     = " + this.NS4     + "\r\n"
                    + "IEmac   = " + this.IEmac   + "\r\n"
                    + "IE4plus = " + this.IE4plus + "\r\n"
                    + "IE4     = " + this.IE4     + "\r\n"
                    + "IE5     = " + this.IE5     + "\r\n"
                    + "IE6     = " + this.IE6     + "\r\n"
                    + "ver4    = " + this.ver4    + "\r\n"
                    + "NS6     = " + this.NS6     + "\r\n"
                    + "IEMajor = " + this.IEMajor + "\r\n"
                    + "IE5plus = " + this.IE5plus + "\r\n"
                    + "\r\n"
                    + "Report Complete";

        alert( l_alert);
    }
}

//=============================================================================
// function popupCalendar( p_dateField)
//=============================================================================
function popupCalendar( p_dateField)
{
	window.dateField = p_dateField;
	cal = window.open( '/forms/html/calendar.html','cal','WIDTH=220,HEIGHT=290');
}

