// JSLibrary.js
//
//      - characters are Letter, Digit, or LetterOrDigit
//      - strings are a Signed, Positive, Negative, Nonpositive, or
//        Nonnegative integer
//      - strings are a Float or a SignedFloat
//      - strings are Alphabetic, Alphanumeric, or Whitespace
//      - strings contain an integer within a specified range
//
// Functions are also provided to interactively check the
// above kinds of data and prompt the user if they have
// been entered incorrectly.
//
// Other utility functions are provided to:
//
// BASIC DATA VALIDATION FUNCTIONS:
// isWhitespace (s)                    Check whether string s is empty or whitespace.
// isInteger (s [,eok])                True if all characters in string s are numbers.
// isSize (s, a						   True if length of the string is greater than or equal to integer a
//
// FUNCTIONS TO REFORMAT DATA:
// stripCharsInBag (s, bag)            Removes all characters in string bag from string s.
// stripWhitespace (s)                 Removes all whitespace characters from s.
// stripInitialWhitespace (s)          Removes initial (leading) whitespace characters from s.
//
// FUNCTIONS TO PROMPT USER:
// showConfirm (title, message, buttons) This function calls the popPrompt.jsp to send a confirm screen to the user
//					 the confirm screen sets a variable called varConfirmResults with either jsYes(1), jsNo(2), jsCancel(4) as a return
//
// FUNCTIONS TO INTERACTIVELY CHECK FIELD CONTENTS:
//
// VARIABLE DECLARATIONS

// variables and constants for the confirm message.
jsOK = 1;
jsCANCEL = 2;
jsYES = 4;
jsNO = 8;
jsRETRY = 16;
jsOKCANCEL = 3;
jsYESNO = 12;
jsYESNOCANCEL = 14;
jsRETRYCANCEL = 18;

//constants for checkChange function
jsTEXT = 1;
jsCHECKBOX = 2;
jsRADIO = 3;

// whitespace characters
var whitespace = " \t\n\r";

//=================================================================================================
function isEmpty(s) {
	return ((s == null) || (s.length == 0))
}
//=================================================================================================
function isWhitespace (s) {
	var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}
//=================================================================================================
function isDigit (c) {
	return ((c >= "0") && (c <= "9"));
}
//=================================================================================================
function findCharsInBag (s, bag) {
	var i;
    for (i = 0; i < s.length; i++) {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) return true;
    }
    return false;
}
//=================================================================================================
function stripCharsInBag (s, bag)
{   var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
//=================================================================================================
function stripInitialWhitespace (s)

{   var i = 0;
    while ((i < s.length) && findCharsInBag (s.charAt(i), whitespace))
       i++;

	return s.substring (i, s.length);
}
//=================================================================================================
function isInteger (s) {
	var i;
	s = stripInitialWhitespace(s);

	if (isEmpty(s)) {
       return true;
	} else {
		for (i = 0; i < s.length; i++) {
			var c = s.charAt(i);
	        if (!isDigit(c)) return false;
		} // end for
    }

	return true;
}
//=================================================================================================
function checkChange(varField, varType) {
	var fieldChanged = false;
	switch (varType) {
	case 1:								// jsTEXT
		if (varField.value != varField.defaultValue) {
			fieldChanged = true;
		}
		break;
	case 2:								// jsCHECKBOX
		if (varField.checked != varField.defaultChecked) {
			fieldChanged = true;
		}
		break;
	case 3:								// jsRADIO
		if (varField.checked || (varField.checked==false)) {
			if (varField.checked != varField.defaultChecked) {
				fieldChanged = true;
			}
		} else {
			for (x=0;x<varField.length;x++) {
				radToCheck = varField[x]
				if (radToCheck.checked != radToCheck.defaultChecked) {
					fieldChanged = true;
				}
			}
		}
		break;
	} // end switch
	return fieldChanged;
} // end function
//=================================================================================================
function encode(str) {
	var result = "";

	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}

	return escape(result);
}

function showConfirm(varTitle, varMessage, varButtons) {
	var retvalue;
	var isNetscape = (navigator.appName == "Netscape");
        var tmp;
	if (!isNetscape)
	{
		varTitle = escape(varTitle);

//pjm		retvalue = window.showModalDialog("popprompt.jsp?TITLE="+ varTitle + "&MESSAGE=" + encode(varMessage) + "&BUTTONS=" + varButtons,"", "dialogHeight=14;dialogWidth=30;center=1;status=0;resizable=0;help=0");
		retvalue = window.showModalDialog("popprompt.jsp?TITLE="+ varTitle + "&MESSAGE=" + escape(varMessage) + "&BUTTONS=" + varButtons,"", "dialogHeight=14;dialogWidth=30;center=1;status=0;resizable=0;help=0");
	} else {
		retvalue = window.confirm(varMessage+"\nOk=Yes Cancel=No");
		if (retvalue)
		{
			retvalue = jsYES;
		} else {
			retvalue = jsNO;
		}
	}
	return retvalue;
}
//=================================================================================================
function doReplaceString(inStr, lookFor, replaceWith) {
        var newStr;
        newStr = inStr.replace(lookFor, replaceWith);
        return newStr;
}
//=================================================================================================

//=================================================================================================
function checkdate(dateField,dateValue){
//	window.onerror=null // for all other strange errors
	var err=0
	var psj=0;
	a=dateValue
	if (a.length != 10) err=1
	b = a.substring(0, 2)// month
	c = a.substring(2, 3)// '/'
	d = a.substring(3, 5)// day
	e = a.substring(5, 6)// '/'
	f = a.substring(6, 10)// year

	//basic error checking
	if (b<1 || b>12) err = 1
	if (c != '/') err = 1
	if (d<1 || d>31) err = 1
	if (e != '/') err = 1
	if (f<1900 || f>2100) err = 1

	//advanced error checking

	// months with 30 days
	if (b==4 || b==6 || b==9 || b==11){
		if (d==31) err=1
	}

	// february, leap year
	if (b==2){
		// feb
		var g=parseInt(f/4)
		if (isNaN(g)) {
			err=1
		}

		if (d>29) err=1
		if (d==29 && ((f/4)!=parseInt(f/4))) err=1
	}

	if (err==1){
          return false;
	}
        else
        {
          return true;
        }
}
function checkDateGreater(toDateValue,fromDateValue){
//	window.onerror=null // for all other strange errors
	var err=0
	var psj=0;
	a=toDateValue
	bt = a.substring(0, 2)// month
	ct = a.substring(2, 3)// '/'
	dt = a.substring(3, 5)// day
	et = a.substring(5, 6)// '/'
	ft = a.substring(6, 10)// year

        a=fromDateValue
	bf = a.substring(0, 2)// month
	cf = a.substring(2, 3)// '/'
	df = a.substring(3, 5)// day
	ef = a.substring(5, 6)// '/'
	ff = a.substring(6, 10)// year


	//advanced error checking
        if (ff > ft)     //year compare
        {
          err=1
        }
        if (ff == ft)   // year are equal
        {
          if ( bf > bt) // month compare
          {
            err=1
          }
          if ( bf == bt)  // months are equal
          {
            if ( df > dt) // day compare
            {
              err=1
            }
          }
        }
        //if((bf > bt) || (df > dt) || (ff >ft))
        //{
        //    err = 1;
        //}
	// months with 30 day

	if (err==1){
          return false;
	}
        else
        {
          return true;
        }
}
function NewWindow(mypage, myname, w, h, scroll) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
win = window.open(mypage, myname, winprops)
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}


function changeMainWindowTitle( sTitle ) {
  top.document.title = sTitle;
}


function isNumericInteger(obj)
{
	var sMask = "0123456789";
	var KeyTyped = String.fromCharCode(window.event.keyCode);
	var srcObject = window.event.srcElement;
	if (sMask.indexOf(KeyTyped.toString()) == -1)
	{
  		window.event.keyCode = 0;
  		_ret = false;
	}
}

//CHANGE NOTHING BELOW THIS POINT!!!!!!!!!!!!
    function flip(pic, r)
    {
        if(r == 2)
        {
            source = eval(pic + "2.src");
            document[pic].src = source;
        }
        if(r == 1)
        {
            source = eval(pic + "1.src");
            document[pic].src = source;
        }
      }



