
var currentClass = null;
var currentElement = null;
var focusElement = null;
var focusClass = null;

var tipDiv = null;

function highlight(element)
{
  if (element == null)
    currentElement = window.event.srcElement;
  else
    currentElement = element;
  if (focusElement != null && currentElement == focusElement)
  {
    currentElement = null;
    return;
  }
  if (currentClass == null)
    currentClass = currentElement.className;
  currentElement.className = currentClass+"Highlight";
}

function press(element)
{
  if (element == null)
    currentElement = window.event.srcElement;
  else
    currentElement = element;
  if (focusElement != null && currentElement == focusElement)
  {
    currentElement = null;
    return;
  }
  if (currentClass == null)
    currentClass = currentElement.className;
  currentElement.className = currentClass+"Pressed";
}

function undo()
{
  if (currentElement != null)
    currentElement.className = currentClass;
  currentElement = null;
  currentClass = null;
}


function focused(element)
{
  if (element == null)
    focusElement = window.event.srcElement;
  else
    focusElement = element;
  if (focusElement == currentElement)
  {
    focusClass = currentClass;
    currentElement = null;
    currentClass = null;
  }
  else
    focusClass = focusElement.className;
  focusElement.className = focusClass+"Focused";
}

function focused(element)
{
  if (element == null)
    focusElement = window.event.srcElement;
  else
    focusElement = element;
  if (focusElement == currentElement)
  {
    focusClass = currentClass;
    currentElement = null;
    currentClass = null;
  }
  else
    focusClass = focusElement.className;
  focusElement.className = focusClass+"Focused";
}

function blurred()
{
  if (focusElement != null)
    focusElement.className = focusClass;
  focusElement = null;
  focusClass = null;
}

function showWaitPanelForm(subform)
{

  if (document.layers)
  {
    document.waitPanel.visibility = 'show';
    document.mainPanel.visibility = 'hide';
  }
  else
  {
    if (document.all)
    {
      var sel = subform.getElementsByTagName("SELECT");
      for(i=0; i<sel.length;i++){
	sel[i].style.visibility="hidden";
      }
      document.all.waitPanel.style.visibility = 'visible';
      document.all.mainPanel.style.visibility = 'hidden';
    }
  }
}

function showWaitPanel()
{

  if (document.layers)
  {
    document.waitPanel.visibility = 'show';
    document.mainPanel.visibility = 'hide';
  }
  else
  {
    if (document.all)
    {
      document.all.waitPanel.style.visibility = 'visible';
      document.all.mainPanel.style.visibility = 'hidden';
    }
  }
}

function submitForm(subform, methodName) {
   //showWaitPanelForm(subform);
   subform.method.value = methodName;
   subform.submit();
}

function submitFormWithAnchor(subform, methodName,anchorLink) {
   //showWaitPanelForm(subform);
   subform.method.value = methodName;
   subform.anchorLink.value = anchorLink;
   subform.submit();
}


// This function is used to display a popup calendar in a new window for
// the purpose of selecting a date
function showCalendar(formName, yearField, monthField, dayField)  {

    targetForm = document.forms[formName];
    year = targetForm.elements[yearField].value;
    month = targetForm.elements[monthField].value;
    day = targetForm.elements[dayField].value;

    url = "/ifx/calendar/calendar.jsp?targetForm=" + formName;
    url += "&targetYearField=" + yearField;
    url += "&targetMonthField=" + monthField;
    url += "&targetDayField=" + dayField;
    url += "&defaultYear=" + year;
    url += "&defaultMonth=" + month;
    url += "&defaultDay=" + day;

  var w = window.open(
    url,
    "dateSelector",
    "width=275,height=200,top=" + event.y + ",left=" + event.x + ",status=no,titlebar=no,toolbar=no,resizable=no,dependent=yes");
}

function gotoPage(page) {
  document.location = page;
}

function popupPage(page) {
  window.open(page);
}

function printPage() {
    //var loc = new String(document.location);
    //if (containsChar(loc, '?')) {
    //    loc += '&print=true';
    //} else {
    //    loc += '?print=true';
    //}
    //document.location = loc;
    window.print();
}

function showtip3(tipDiv, text) {
    if (document.all && document.readyState == "complete") {
        theDiv = document.all[tipDiv];
        theDiv.innerHTML = text;
        theDiv.style.visibility = "visible";
    }
}

function hidetip3(tipDiv) {
    if (document.all) {
        theDiv = document.all[tipDiv];
        theDiv.style.visibility = "hidden";
    }
}

function showtip(text) {
    if (document.all && document.readyState == "complete") {
        theDiv = document.all['tipDiv'];
        theDiv.innerHTML = text;
        theDiv.style.visibility = "visible";
    }
}

function hidetip() {
    if (document.all) {
        theDiv = document.all['tipDiv'];
        theDiv.style.visibility = "hidden";
    }
}

// A utility function that returns true if a string contains only
// whitespace characters or is null.
function isblank(s) {
    if (s == null) {
        return true;
    }
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

function containsChar(s, c) {
    if (s == null || c == null) {
        return false;
    }
    for (var i = 0; i < s.length; i++) {
        if (s.charAt(i) == c) {
            return true;
        }
    }
    return false;
}


function y2k(number) {
	return (number < 1000) ? number + 1900 : number;
}

function Dates() {
	var day="";
	var month="";
	var myweekday="";
	var year="";
	newdate = new Date();
	mydate = new Date();
	newtime=newdate.getTime();

	myday = mydate.getDay();
	mymonth = mydate.getMonth();
	myweekday= mydate.getDate();
	myyear= y2k(mydate.getYear());
	year = parseInt(myyear);

	myhours = mydate.getHours();
	if (myhours >= 12) {
		myhours = (myhours == 12) ? 12 : myhours - 12; mm = " PM";
	} else {
		myhours = (myhours == 0) ? 12 : myhours; mm = " AM";
	}

	myminutes = mydate.getMinutes();
	if (myminutes < 10){
		mytime = ":0" + myminutes;
	} else {
		mytime = ":" + myminutes;
	}

	arday = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
	armonth = new Array("January ","February ","March ","April ","May ","June ","July ","August ","September ", "October ","November ","December ")
	ardate = new Array("0th","1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th","11th","12th","13th","14th","15th","16th","17th","18th","19th","20th","21st","22nd","23rd","24th","25th","26th","27th","28th","29th","30th","31st");

	var time = (armonth[mymonth] +" "+ardate[myweekday] + ", " + year);
	document.write(time);
}

function writeCurrentYear(){
	mydate = new Date();
	myyear= y2k(mydate.getYear());
	year = parseInt(myyear);
	document.write(year);
}

function isEmail(str) {
    // are regular expressions supported?
    var supported = 0;
    if (window.RegExp) {
        var tempStr = "a";
        var tempReg = new RegExp(tempStr);
        if (tempReg.test(tempStr)) supported = 1;
    }
    if (!supported) {
        return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
    }
    var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
    return (!r1.test(str) && r2.test(str));
}

/**
 * Validates the time.
 * Checks if time is in HH:MM:SS AM/PM format.
 * The AM/PM are optional.
 */
function isValidTime(timeStr, secondsRequired) {

    var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

    var matchArray = timeStr.match(timePat);
    if (matchArray == null) {
        alert("Time is not in a valid format.");
        return false;
    }

    hour = matchArray[1];
    minute = matchArray[2];
    second = matchArray[4];
    ampm = matchArray[6];

    if (secondsRequired && second == "") {
        alert("You need to enter seconds values.");
        return false;
    }

    if (ampm=="") { ampm = null }

    if (hour < 0  || hour > 23) {
        alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
        return false;
    }

    //if (hour <= 12 && ampm == null) {
    //	if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
    //		alert("You must specify AM or PM.");
    //		return false;
    //      }
    //}

    //if  (hour > 12 && ampm != null) {
    //	alert("You can't specify AM or PM for military time.");
    //	return false;
    //}

    if (minute<0 || minute > 59) {
        alert ("Minute must be between 0 and 59.");
        return false;
    }

    if (second != null && (second < 0 || second > 59)) {
        alert ("Second must be between 0 and 59.");
        return false;
    }
    return true;
}

/**
 * Sorts the content of an paticular html table.
 */
function sortTable(tgtTable, onCol, hasHeading, asNumber, sortOrder, skipLastRow) {

    if (sortOrder == '0') {  // ascending
	descending = false;
    } else {
	descending = true;
    }

    tgtTable = document.getElementById(tgtTable);
    if(!onCol) onCol=0;
    if(skipLastRow) {
        skipLastRow = 1;
    } else {
        skipLastRow = 0;
    }
    var i=0;
    if(hasHeading) i=1;
    var nRows = tgtTable.rows.length;
    var t, ele1, ele2;
    for(; i < nRows-1-skipLastRow; i++) {
        t=i;
        for(var j=i+1; j < nRows-skipLastRow; j++) {
            ele1 = tgtTable.rows[j].cells[onCol].innerText;
			ele2 = tgtTable.rows[t].cells[onCol].innerText;

            if(asNumber) {
                ele1 = parseFloat(ele1);
                ele2 = parseFloat(ele2);
            }
            if(!descending  &&  ele1 < ele2) {
                t=j;
            } else if(descending  &&  ele1 > ele2) {
                t=j;
            }
        }
        tgtTable.tBodies[0].insertBefore(tgtTable.rows[t], tgtTable.rows[i]);
    }
}

// Set's the browser status bar message
function setStatusBar(msgStr) {
    self.status = msgStr;
}
