var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var blanks = " \t\n\r";	
var digits = "0123456789";
var dateChars = "0123456789/";
var decimalPointDelimiter = "."
var today = new Date();
var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;

// ----------------------------------------------------
// VALIDATE PHONE NUMBER
// ----------------------------------------------------
function ValidatePhoneNumber(number) {
	var s
	s = stripCharsInBag(number,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

// ----------------------------------------------------
// VALIDATE EMAIL
// ----------------------------------------------------
function ValidateEmail(emailAddress){
	if (InStr(1,emailAddress,"@",1) == 0 || InStr(1,emailAddress,".",1) == 0) {
		return false
	} else {
		return true
	}
}

// ----------------------------------------------------
// IS INTEGER
// ----------------------------------------------------
function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

// ----------------------------------------------------
// STRIP CHARACTERS IN BAG
// ----------------------------------------------------
function stripCharsInBag(s, bag){   
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to 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;
}

// ----------------------------------------------------
// SET COOKIE
// ----------------------------------------------------
// writes a cookie to the user's cookie file
// -------------------------------------------------- 
function Set_Cookie(name,value,expires,path,domain,secure) {
    document.cookie = name + "=" + escape(value) +
        ( (expires) ? ";expires=" + expires.toGMTString() : "") +
        ( (path) ? ";path=" + path : "") + 
        ( (domain) ? ";domain=" + domain : "") +
        ( (secure) ? ";secure" : "");
}

// ----------------------------------------------------
// GET COOKIE
// ----------------------------------------------------
// retrieves a cookie to the user's cookie file
// --------------------------------------------------    
function Get_Cookie(name) {
    var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}

// -------------------------
//  SHOW HELP SCREENS
// -------------------------
function ShowHelp(whichScreen) {
	if (whichScreen == "CASE") {
		OpenWindow('../Help/help_case.htm')
	} else if (whichScreen == "GROUP") {
		OpenWindow('../Help/help_group.htm')	
	} else if (whichScreen == "SEARCH") {
		OpenWindow('../Help/help_search.htm')	
	} else if (whichScreen == "NEW_GROUP") { 
		OpenWindow('../Help/help_newGroup.htm')	
	} else if (whichScreen == "ADMIN") { 
		OpenWindow('../Help/help_administration.htm')	
	}else if (whichScreen == "REPORTS") { 
		OpenWindow('../Help/help_reports.htm')	
	}

}
	
// -------------------------
//    OPEN HELP WINDOW 
// -------------------------
var Win = ""
function OpenWindow(url) {

	var avWidth = screen.availWidth;
	var avHeight = screen.availHeight;
	var w = 650
	var h = 400

	// only allow one window open at a time
	if (Win != null && Win.open) Win.close();

	// open the window
	Win =  window.open(url,'', 'menubar=yes,scrollbars=yes,' +'width=' + w + ',height=' + h + ',left='+((avWidth  - w - 10) * .5) + ',top=' + ((avHeight  - h - 30) * .5));
    if (!Win.opener)
         Win.opener = self; 
}

// --------------------------
//  INSTR
// --------------------------
function InStr(Start, String1, String2, Compare) {
  if (Start < 1) {
    return "";
  }
  if (Start > Len(String1)) return 0;
  if (Len(String2) == 0) return Start;
  if (Compare == 1) {String1 = LCase(String1); String2 = LCase(String2);}
  if (Start > 1) {
    var index = Right(String1, Len(String1) - Start + 1).indexOf(String2)
    if (index == -1) {return 0;} else {return index + Start;}
  } else {
    return String1.indexOf(String2) + 1
  }
}

// --------------------------
//  LEFT
// --------------------------
function Left(str, n){
	if (n <= 0)     			// Invalid bound, return blank string
		return "";
	else if (n > String(str).length)   	// Invalid bound, return
		return str;                	// entire string
	else // Valid bound, return appropriate substring
		return String(str).substring(0,n);
}

// --------------------------
//  RIGHT
// --------------------------
function Right(str, n){
	if (n <= 0)     			// Invalid bound, return blank string
        	return "";
	else if (n > String(str).length)   	// Invalid bound, return
		return str;                     // entire string
	else { // Valid bound, return appropriate substring
		 var iLen = String(str).length;
		 return String(str).substring(iLen, iLen - n);
	}
}

// ----------------------------
// MID
// ----------------------------
function Mid(str, start, len){
	// Make sure start and len are within proper bounds
	if (start < 0 || len < 0) return "";

	var iEnd, iLen = String(str).length;
	if (start + len > iLen)
		iEnd = iLen;
	else
		iEnd = start + len;

	return String(str).substring(start,iEnd);
}

// --------------------------------------------
// STRIP LEADING BLANK CHARACTERS
// --------------------------------------------
// Removes leading blank chars
// --------------------------------------------
function TrimLeft(s)
  { 
  var i = 0;
  while ((i < s.length) && (blanks.indexOf(s.charAt(i)) != -1))
     i++;
  return s.substring(i, s.length);
  }


// --------------------------------------------
// STRIP TRAILING BLANK CHARACTERS
// --------------------------------------------
// Removes trailing blank chars
// --------------------------------------------
function TrimRight(s) { 
  var i = s.length - 1;
  while ((i >= 0) && (blanks.indexOf(s.charAt(i)) != -1))
     i--;
  return s.substring(0, i+1);
}

// --------------------------------------------
// STRIP LEADING AND TRAILING BLANK CHARACTERS
// --------------------------------------------
// Removes leading & trailing blank chars
// --------------------------------------------
function Trim(s) { 
  s = TrimLeft(s);
  s = TrimRight(s);
  return s;
}

// --------------------------------------------
// CLEAR FORM FIELDS
// --------------------------------------------
// Clear any data in the form fields
// --------------------------------------------
function ClearFormFields(frm) {
	// clear out all the fields
	for (i = 0; i < frm.elements.length; i++) {
		if (frm.elements[i].type != "button") {
			frm.elements[i].value = ""
		}
	}
}

// ----------------------------------------------------
// CHANGE BUTTON COLORS
// ----------------------------------------------------
// Changes button color on mouseover/mouseout
// --------------------------------------------------
function ChangeButtonColor(color){
	event.srcElement.style.backgroundColor = color
}

// ----------------------------------------------------
// CHANGE CELL COLORS
// ----------------------------------------------------
// Changes table cell color on mouseover/mouseout
// --------------------------------------------------
function ChangeColor(cell, color) {
	cell.bgColor = color
}

// ----------------------------------------------------
//   SET BORDER COLOR
// ----------------------------------------------------
// If user did not enter a required field the border color
// is set to red. 
// ----------------------------------------------------
function SetBorderColor(field,color,width) {
	// IE ONLY
	field.style.borderColor = color
	field.style.borderWidth = width
} 

// ----------------------------------------------------
//   RESET BORDER COLOR
// ----------------------------------------------------
// If user did not enter a required field the border color
// is set to red. This function returns the border to black
// ----------------------------------------------------
function ResetBorderColor(field) {
	// IE ONLY
	field.style.border = "1px inset white"
	field.style.borderColor = "white"
} 

// ----------------------------------------------------
// CONFIRMATION DIALOG
// ----------------------------------------------------
// opens an alert with OK/Cancel btns
// --------------------------------------------------
function confirmSubmit() {
	var agree = confirm("Are you sure you want to delete this record?");
	if (agree)
		return true ;
	else
		return false ;
}

// --------------------------
//  DISABLE ENTER KEY
// --------------------------
// call on keypress of input fields
// --------------------------------
function disableEnterKey() { 
	if (window.event.keyCode == 13) {
		window.event.keyCode = 0; 
	}
}  
	
// --------------------------
//  IS ALPHA
// --------------------------
  function isAlpha(c) {
    // is c a String or a character?
    if(c.length>1) {
      for(j=0;j<c.length;j++) {
        // call isAlpha recursively for each character
        alpha=isAlpha(c.substring(j,j+1));
        if(!alpha) return alpha;
      }
      return alpha;
    }
    else {
      // if c is alpha return true
      if(lowercaseLetters.indexOf(c)>=0 || uppercaseLetters.indexOf(c)>=0) return true;
      return false;
    }
  }

// --------------------------
//  LCASE
// -------------------------- 
function LCase(Value) {
  return Value.toString().toLowerCase();
}

// --------------------------
//  UCASE
// -------------------------- 
function UCase(Value) {
  return Value.toString().toUpperCase();
}

// --------------------------
//  LEN
// -------------------------- 
function Len(Expression) {
  return Expression.toString().length;
}

