var GlobalDateFormat = 0 // Set format for client side date handling 0=mm/dd/yyyy, 1=dd/mm/yyyyy

//JS Functions @0-B4351BDC
var isNN = (navigator.appName.indexOf("Netscape") != -1);
var isIE = (navigator.appName.indexOf("Microsoft") != -1);
var IEVersion = (isIE ? getIEVersion() : 0);
var NNVersion = (isNN ? getNNVersion() : 0);
var EditableGrid = false;
var disableValidation = false;

function functionExists(functionName)
{
  var exists = true;
  try{
    exists = typeof(eval(functionName))=="function";
  }catch(e){
    exists = false;
  }
  return exists;
}

function ccsShowError(control, msg)
{
  alert(msg);
  control.focus();
  return false;
}

function getNNVersion()
{
  var userAgent = window.navigator.userAgent;
  var isMajor = parseInt(window.navigator.appVersion);
  var isMinor = parseFloat(window.navigator.appVersion);
  if (isMajor == 2) return 2;
  if (isMajor == 3) return 3;
  if (isMajor == 4) return 4;
  if (isMajor == 5) 
  {
    if (userAgent.toLowerCase().indexOf('netscape')!=-1)
    {
      isMajor = parseInt(userAgent.substr(userAgent.toLowerCase().indexOf('netscape')+9));
      if (isMajor>0) return isMajor;
    }
    return 6;
  }
  return isMajor;
}

function getIEVersion()
{
  var userAgent = window.navigator.userAgent;
  var MSIEPos = userAgent.indexOf("MSIE");
  return (MSIEPos > 0 ? parseInt(userAgent.substring(MSIEPos+5, userAgent.indexOf(".", MSIEPos))) : 0);
}

function inputMasking(evt)
{
  if (isIE && IEVersion > 4)
  {
    if (window.event.altKey) return false;
    if (window.event.ctrlKey) return false;
    if (typeof(this.ccsInputMask) == "string")
    {
      var mask = this.ccsInputMask;
      var keycode = window.event.keyCode;
      this.value = applyMask(keycode, mask, this.value);
    }
    return (window.event.keyCode==13?true:false);
  } else if (isNN && NNVersion<6)
  {
    if (evt.ALT_MASK) return false;
    if (evt.CONTROL_MASK) return false;
    if (typeof(this.ccsInputMask) == "string")
    {
      var mask = this.ccsInputMask;
      var keycode = evt.which;
      this.value = applyMask(keycode, mask, this.value);
    }
    return (evt.which==13?true:false);
  } else if (isNN && NNVersion==6)
  {
    if (evt.altKey) return false;
    if (evt.ctrlKey) return false;
    var cancelKey = evt.which==13;
    if (typeof(this.ccsInputMask) == "string")
    {
      var mask = this.ccsInputMask;
      var keycode = evt.which;
      if (keycode >= 32)
        this.value = applyMaskToValue(mask, this.value);
    }
    return cancelKey || evt.which==13;
  } else if (isNN && NNVersion==7)
  {
    if (evt.altKey) return false;
    if (evt.ctrlKey) return false;
    var cancelKey = evt.which==13;
    if (typeof(this.ccsInputMask) == "string")
    {
      var mask = this.ccsInputMask;
      var keycode = evt.which;
      cancelKey = keycode < 32;
      if (!cancelKey)
        this.value = applyMask(keycode, mask, this.value);
    }
    return cancelKey || evt.which==13;
  } else
    return true;
}

function applyMaskToValue(mask, value)
{
  var oldValue = String(value);
  var newValue = "";
  for (var i=0; i<oldValue.length; i++)
  {
    newValue = applyMask(oldValue.charCodeAt(i), mask, newValue);
  }
  return newValue;
}

function applyMask(keycode, mask, value)
{
  var digit = (keycode >= 48 && keycode <= 57);
  var plus = (keycode == 43);
  var dash = (keycode == 45);
  var space = (keycode == 32);
  var uletter = (keycode >= 65 && keycode <= 90);
  var lletter = (keycode >= 97 && keycode <= 122);
  
  var pos = value.length;
  switch(mask.charAt(pos))
  {
    case "0":
      if (digit)
        value += String.fromCharCode(keycode);
      break;
    case "L":
      if (uletter || lletter)
        value += String.fromCharCode(keycode);
      break;
    default:
      var isMatchMask = (String.fromCharCode(keycode) == mask.charAt(pos));
      while (pos < mask.length && mask.charAt(pos) != "0" && mask.charAt(pos) != "L")
        value += mask.charAt(pos++);
      if (!isMatchMask && pos < mask.length)
        value = applyMask(keycode, mask, value);
  }  
  return value;
}



function parseDateFormatStr(strMask)
{

function isInArray(strValue, arrArray)
{
  var intResult = -1;
  for ( var j = 0; j < arrArray.length && (strValue != arrArray[j]); j++ );
  if ( j != arrArray.length )
    intResult = j;    
  return intResult;
}

 if (strMask=="LongDate")
      return  parseDateFormatStr("dddd, mmmm dd, yyyy");
 else if (strMask=="LongTime")
      return  parseDateFormatStr("h:nn:ss AM/PM");
 else if (strMask=="ShortDate")
 	if (GlobalDateFormat == 0)
      return  parseDateFormatStr("m/d/yyyy");
    else
      return  parseDateFormatStr("d/m/yyyy");
      
 else if (strMask=="ShortTime")
      return  parseDateFormatStr("H:nn");
 else if (strMask=="GeneralDate")
      return  parseDateFormatStr("m/d/yy hh:nn AM/PM");

  var UNDEF;
  var arrResult = new Array();             
  if (strMask == "" || typeof(strMask) == "undefined")
    return arrResult;
  var arrMaskTokens = new Array(
  "d", "w", "m", "M", "q", "y", "h", "H", "n", "s", 
  "dd", "ww", "mm", "MM", "yy", "hh", "HH", "nn", "ss", "S",
  "ddd", "mmm", "MMM", "A/P", "a/p", "dddd", "mmmm", "MMMM", 
  "yyyy", "AM/PM", "am/pm", "LongDate", "LongTime", 
  "ShortDate", "ShortTime", "GeneralDate");
  var arrMaskTokensFirstLetters = new Array("d", "w", "m", "M",
  "q", "y", "h", "H", "n", "s", "A", "a", "L", "S", "G");
  var strMaskLength = strMask.length;
  var i = 0, intMaskPosition = 0;
  var arrMask = new Array();
  var strToken = "";
  while (i < strMaskLength)
  {
  if (strMask.charAt(i) == "\\")
  {
    strToken += strMask.charAt(++i);
    i ++;
  }
  else if (strMask.charAt(i) == "'")
  {
    i ++;
    while ((i < strMask.length) && (strMask.charAt(i) != "'"))
    strToken += strMask.charAt(i++);
    i ++;
  }
  else
  {
    var j = isInArray(strMask.charAt(i), arrMaskTokensFirstLetters);
    if ( j != -1 )
    {
    var k;
    for (k = (arrMaskTokens.length - 1); k >= 0 && 
      strMask.slice(i, i + arrMaskTokens[k].length) != arrMaskTokens[k]; k--);
    if (k != -1)
    {
      if (strToken.length > 0)
      {
      if ( isInArray(strToken, arrMaskTokens) == -1)
        arrMask[intMaskPosition ++] = strToken;
      else
        arrMask[intMaskPosition ++] = "\\" + strToken;
      strToken = "";
      }
      arrMask[intMaskPosition ++] = arrMaskTokens[k];
      i += arrMaskTokens[k].length;
    }
    else
    {
      strToken = strMask.charAt(i);
      i ++;
    }
    }
    else
    {
    strToken += strMask.charAt(i);
    i ++;
    }
  }
  }
  if (strToken.length > 0)
  {
  if ( isInArray(strToken, arrMaskTokens) == -1)
    arrMask[intMaskPosition ++] = strToken;
  else
    arrMask[intMaskPosition ++] = "\\" + strToken;
  strToken = "";
  }
  arrResult = arrMask;
  return arrResult;
}

function validate_control(control)
{
/*
ccsCaption - string
ccsErrorMessage - string

ccsRequired - boolean
ccsMinLength - integer
ccsMaxLength - integer
ccsRegExp - string

ccsValidator - validation function

ccsInputMask - string
*/
  if (disableValidation) return true;
  var errorMessage = control.ccsErrorMessage;
  var customErrorMessage = (typeof(errorMessage) != "undefined");
   
  if (typeof(control.ccsRequired) == "boolean" && control.ccsRequired)
    if (control.value == "")
      return ccsShowError(control, customErrorMessage ? errorMessage :
        "The value in field " + control.ccsCaption + " is required.");

  if (typeof(control.ccsMinLength) == "number")
    if (control.value != "" && control.value.length < parseInt(control.ccsMinLength))
      return ccsShowError(control, customErrorMessage ? errorMessage :
        "The length in field " + control.ccsCaption + " can't be less than " + parseInt(control.ccsMinLength) + " symbols.");

  if (typeof(control.ccsMaxLength) == "number")
    if (control.value != "" && control.value.length > parseInt(control.ccsMaxLength))
      return ccsShowError(control, customErrorMessage ? errorMessage :
        "The length in field " + control.ccsCaption + " can't be greater than " + parseInt(control.ccsMaxLength) + " symbols.");

  if (typeof(control.ccsInputMask) == "string")
  {
    var mask = control.ccsInputMask;
    var maskRE = new RegExp(stringToRegExp(mask).replace(/0/g,"\\d").replace(/L/g,"[A-Za-z]"), "i");
    if (control.value != "" && (control.value.search(maskRE) == -1))
      return ccsShowError(control, customErrorMessage ? errorMessage :
        "The value in field " + control.ccsCaption + " is not valid.");
  }

  if (typeof(control.ccsRegExp) == "string")
    if (control.value != "" && (control.value.search(new RegExp(control.ccsRegExp, "i")) == -1))
      return ccsShowError(control, customErrorMessage ? errorMessage :
        "The value in field " + control.ccsCaption + " is not valid.");

  if (typeof(control.ccsDateFormat) == "string")
  {
    if (control.value != "" && !checkDate(control.value, parseDateFormatStr(control.ccsDateFormat).join("")))
      return ccsShowError(control, customErrorMessage ? errorMessage :
        "The value in field " + control.ccsCaption + " is not valid. Use the following format: "+parseDateFormatStr(control.ccsDateFormat).join(""));
  }

  if (typeof(control.ccsValidator) == "function")
    if (!control.ccsValidator())
      return ccsShowError(control, customErrorMessage ? errorMessage :
        "The value in field " + control.ccsCaption + " is not valid.");

  return true;
}

function stringToRegExp(string, arg)
{
  var str = String(string);
  str = str.replace(/\\/g,"\\\\");
  str = str.replace(/\//g,"\\/");
  str = str.replace(/\./g,"\\.");
  str = str.replace(/\(/g,"\\(");
  str = str.replace(/\)/g,"\\)");
  str = str.replace(/\[/g,"\\[");
  str = str.replace(/\]/g,"\\]");
  return str;
}

function checkDate(dateValue, dateFormat)
{
  dateFormat = dateFormat.replace("AM/PM","f1").replace("A/P","f2").replace("am/pm","f3").replace("a/p","f4");

  var DateMasks = new Array(
                    new Array("MMMM", "[a-z]+"),
                    new Array("mmmm", "[a-z]+"),
                    new Array("yyyy", "[0-9]{4}"),
                    new Array("MMM", "[a-z]+"),
                    new Array("mmm", "[a-z]+"),
                    new Array("HH", "([0-1][0-9]|2[0-4])"),
                    new Array("hh", "(0[1-9]|1[0-2])"),
                    new Array("dd", "([0-2][0-9]|3[0-1])"),
                    new Array("MM", "(0[1-9]|1[0-2])"),
                    new Array("mm", "(0[1-9]|1[0-2])"),
                    new Array("yy", "[0-9]{2}"),
                    new Array("nn", "[0-5][0-9]"),
                    new Array("ss", "[0-5][0-9]"),
                    new Array("w", "[1-7]"),
                    new Array("d", "(0?[1-9]|[1-2][0-9]|3[0-1])"),
                    new Array("y", "([1-2][0-9]{0,2}|3([0-5][0-9]|6[0-5]))"),
                    new Array("H", "(00|0?[1-9]|1[0-9]|2[0-4])"),
                    new Array("h", "(0?[1-9]|1[0-2])"),
                    new Array("M", "(0?[1-9]|1[0-2])"),
                    new Array("m", "(0?[1-9]|1[0-2])"),
                    new Array("n", "[0-5]?[0-9]"),
                    new Array("s", "[0-5]?[0-9]"),
                    new Array("q", "[1-4]")
                  );
  var regExp = "^"+stringToRegExp(dateFormat)+"$";
  for (var i=0; i<DateMasks.length; i++)
  {
    regExp = regExp.replace(DateMasks[i][0], DateMasks[i][1]);
  }
  regExp=regExp.replace("f1","(AM|PM)").replace("f2","(A|P)").replace("f3","(am|fm)").replace("f4","(a|f)");
  var regExp = new RegExp(regExp,"i");
  return String(dateValue).search(regExp)!=-1;
}

function validate_row(rowId, form)
{
  var result = true;
  var isInsert = false;
  if (disableValidation) return true;
  if(typeof(eval(form + "EmptyRows")) == "number")
    if(eval(form + "Elements").length - rowId <= eval(form + "EmptyRows"))
      isInsert = true;
    for (var i = 0; i < eval(form + "Elements")[rowId].length && isInsert; i++)
      isInsert = GetValue(eval(form + "Elements")[rowId][i]) == "";
  if(isInsert) return true;

  if(typeof(eval(form + "DeleteControl")) == "number")
    {
      var control = eval(form + "Elements")[rowId][eval(form + "DeleteControl")];
      if(control.type == "checkbox")
        if(control.checked == true ) return true;
      if(control.type == "hidden")
        if(control.value != "" ) return true;
    }

  for (var i = 0; i < eval(form + "Elements")[rowId].length && (result = validate_control(eval(form + "Elements")[rowId][i])); i++);
  return result;
}

function GetValue(control) {
    if (typeof(control.value) == "string") {
        return control.value;
    }
    if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
        var j;
        for (j=0; j < control.length; j++) {
            var inner = control[j];
            if (typeof(inner.value) == "string" && (inner.type != "radio" || inner.status == true)) {
                return inner.value;
            }
        }
    }
    else {
        return GetValueRecursive(control);
    }
    return "";
}

function GetValueRecursive(control)
{
    if (typeof(control.value) == "string" && (control.type != "radio" || control.status == true)) {
        return control.value;
    }
    var i, val;
    for (i = 0; i<control.children.length; i++) {
        val = GetValueRecursive(control.children[i]);
        if (val != "") return val;
    }
    return "";
}


function validate_form(form)
{
  var result = true;
  if (disableValidation) return true;
  if(typeof(form) == "object" && String(form.tagName).toLowerCase()!="form" && form.form!=null) form = form.form;
  if(typeof(form) == "object" && document.getElementById(form.name + "Elements")) {
    if (typeof(eval(form.name + "Elements")) == "object") 
      for (var j = 0; j < eval(form.name + "Elements").length && result; j++) result = validate_row(j, form.name);
    else 
      for (var i = 0; i < form.elements.length && (result = validate_control(form.elements[i])); i++);
  }else if(typeof(form) == "string" && document.getElementById(form.name + "Elements"))
  {
    if(typeof(eval(form + "Elements")) == "object"){
      for (var j = 0; j < eval(form + "Elements").length && result; j++)
        result = validate_row(j, form);
    }
  }else if (typeof(form) == "object")
          for (var i = 0; i < form.elements.length && (result = validate_control(form.elements[i])); i++);
        else	
          for (var i = 0; i < document.forms[form].elements.length && (result = validate_control(document.forms[form].elements[i])); i++);
  return result;
}

function forms_onload()
{
  var forms = document.forms;
  var i, j, elm, form, ic, jc;
  ic = forms.length;
  for(i = 0; i < ic; i++)
  {
    form = forms[i];
    if (typeof(form.onLoad) == "function") form.onLoad();
    jc = form.elements.length;
    for (j = 0; j < jc; j++)
    {
      elm = form.elements[j];
      if (typeof(elm.onLoad) == "function") elm.onLoad();
    }
  }
  return true;
}

//
// If element exist than bind function func to element on event.
// Example: check_and_bind('document.NewRecord1.Delete1','onclick',page_NewRecord1_Delete1_OnClick);
//
function check_and_bind(element,event,func) {
  var htmlElement = eval(element);
  if (htmlElement) {
    if (typeof(htmlElement)=="object" && !htmlElement.tagName && htmlElement.length > 0)
    {
      for (var i=0; i < htmlElement.length; i++)
        eval(element+"["+i+'].'+event+'='+func);
    }else eval(element+'.'+event+'='+func);
  }
}

//End JS Functions

function URLencode(sStr) {
    return escape(sStr).replace(/\+/g, '%2C').replace(/\"/g,'%22').replace(/\'/g, '%27');
  }


function setCurrent(theID) {
        /***
                PURPOSE: Set active tab on CSS tabbed menu
                IN: theID - name of the tab identifier
        ***/
    if (document.getElementById(theID)){
	 document.getElementById(theID).id = 'current';
	}
}


function OpenPopup(strRef)
{
        /***
                PURPOSE: Open Popup Window
                IN: strRef - href of the window to open
        ***/

  var win=window.open(strRef,"InfoPopup", "left=100,top=100,width=600,height=250,status=yes,toolbar=no,menubar=no,location=no,scrollbars=no,resizable=yes");
  win.focus();
}

function OpenPopup2(strRef)
{
        /***
                PURPOSE: Open Popup Window
                IN: strRef - href of the window to open
        ***/

  var win=window.open(strRef,"InfoPopup", "left=50,top=50,width=800,height=600,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes");
  win.focus();
}

function OpenPopupMin(strRef)
{
        /***
                PURPOSE: Open Popup Window
                IN: strRef - href of the window to open
        ***/

  var win=window.open(strRef,"InfoPopup", "left=0,top=0,width=100,height=100,status=no,toolbar=no,menubar=no,location=no,scrollbars=no,resizable=no");
  win.focus();
}
function LTrim(str)
        /***
                PURPOSE: Remove leading blanks from our string.
                IN: str - the string we want to LTrim

                RETVAL: An LTrimmed string!
        ***/
        {
                var whitespace = new String(" \t\n\r");

                var s = new String(str);

                if (whitespace.indexOf(s.charAt(0)) != -1) {
                    // We have a string with leading blank(s)...

                    var j=0, i = s.length;

                    // Iterate from the far left of string until we
                    // don't have any more whitespace...
                    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
                        j++;


                    // Get the substring from the first non-whitespace
                    // character to the end of the string...
                    s = s.substring(j, i);
                }

                return s;
        }

function RTrim(str)
        /***
                PURPOSE: Remove trailing blanks from our string.
                IN: str - the string we want to RTrim

                RETVAL: An RTrimmed string!
        ***/
        {
                // We don't want to trip JUST spaces, but also tabs,
                // line feeds, etc.  Add anything else you want to
                // "trim" here in Whitespace
                var whitespace = new String(" \t\n\r");

                var s = new String(str);

                if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
                    // We have a string with trailing blank(s)...

                    var i = s.length - 1;       // Get length of string

                    // Iterate from the far right of string until we
                    // don't have any more whitespace...
                    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
                        i--;


                    // Get the substring from the front of the string to
                    // where the last non-whitespace character is...
                    s = s.substring(0, i+1);
                }

                return s;
        }

function Trim(str)
        /***
                PURPOSE: Remove trailing and leading blanks from our string.
                IN: str - the string we want to Trim

                RETVAL: A Trimmed string!
        ***/
        {
                return RTrim(LTrim(str));
        }

function isValidDate(datectrl) {

var myDate = new Date;
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)?(\d{4}|\d{2})?$/; 
var dateStr = Trim(datectrl.value);

if (dateStr == "" || dateStr == null) return ;  //nothing to process

var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {

return false;
}
if (matchArray[5] == null || matchArray[5] == "") {
	matchArray[5] = myDate.getFullYear();
	}

if (GlobalDateFormat == 0) {
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[5];
	}
	else {
	month = matchArray[3]; // parse date into variables
	day = matchArray[1];
	year = matchArray[5];
}
//Netscape fix for year

year = parseInt(year);
if (year < 50) {
	year = (year + 2000);
} else {
	if (year < 100) {
		year = (year + 1900);
	}
}
//if (year.length < 4) year = 20 + year ;
//if (month.length < 2) month = 0 + month;
//if (day.length < 2) day = 0 + day; 

if (month < 1 || month > 12) { // check month range
alert("Month must be between 1 and 12.");

return false;
}
if (day < 1 || day > 31) {
alert("Day must be between 1 and 31.");

return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Month "+month+" doesn't have 31 days!")

return false;
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("February " + year + " doesn't have " + day + " days!");

return false;
   }
}
if (GlobalDateFormat == 0) {
	datectrl.value = month + "/" + day + "/" + year
	}
	else {
	datectrl.value = day + "/" + month + "/" + year
}

return true;
}

function isValidTime(timectrl) {


//var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s*(AM|am|PM|pm))?$/;

var timePat = /^(\d{1,2})(:)?(\d{2})?(:(\d{2}))?(\s*(A|a|P|p)(M|m)?)?$/;

var timeStr = Trim(timectrl.value);

if (timeStr == "" || timeStr == null) return ;  //nothing to process

var matchArray = timeStr.match(timePat);
if (matchArray == null) {
alert("Invalid time format.");

return false;
}
hour = matchArray[1];
minute = matchArray[3];
second = matchArray[5];
ampm = matchArray[7];
switch(ampm) {
	case "a":
		ampm = "AM";
		break;
	case "A":
		ampm = "AM";
		break;
	case "p":
		ampm = "PM";
		break;
	case "P":
		ampm = "PM";
		break;
	}
		


if (second=="") { second = null; }
if (minute=="" || minute == null) {minute = 0;}
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) {
	ampm = "AM"; 
}
if (hour == 12 && ampm == null) {
	ampm = "PM"; 
}

if  (hour > 12) {
	ampm = "PM";
	hour = hour - 12;
}
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;
}

if (minute.length != 2) 
 	minute = leadingZero(minute);
if (hour.length < 2) hour = 0 + hour;


timectrl.value = hour + ":" + minute + " " + ampm
return true;
}


function dateDiff(startdate, starttime, enddate, endtime, acthours, actminutes) {

date1 = new Date();
date2 = new Date();
diff  = new Date();

if (isValidDate(startdate) && isValidTime(starttime)) { // Validates first date 
date1temp = new Date(startdate.value + " " + starttime.value);
date1.setTime(date1temp.getTime());
}
else return false; // otherwise exits


if (isValidDate(enddate) && isValidTime(endtime)) { // Validates second date 
date2temp = new Date(enddate.value + " " + endtime.value);
date2.setTime(date2temp.getTime());
}
else return false; // otherwise exits

if (date2 < date1) {
	alert("End date and time must be greater than start date and time");
	return false;
}
// sets difference date to difference of first date and second date

diff.setTime(Math.abs(date1.getTime() - date2.getTime()));

timediff = diff.getTime();


hours = Math.floor(timediff / (1000 * 60 * 60)); 
timediff -= hours * (1000 * 60 * 60);

mins = Math.floor(timediff / (1000 * 60)); 


acthours.value = hours ;
if (mins < 10) {

	actminutes.value = "0" + mins ;

} else {
	actminutes.value = mins ;
}

return true; // 
}

function jsFormatDate(xdate)
{

var Year = xdate.getFullYear();
var Month = leadingZero(xdate.getMonth()+1);
var Day = leadingZero(xdate.getDate());
 
	if (Year < 2000) {
		Year = (Year + 1900);
	}
	if (GlobalDateFormat == 0) {
		return Month + "/" + Day + "/" + Year;
	} else {
		return Day + "/" + Month + "/" + Year;
	}
}

function jsFormatTime(xDate)
{
var Hours = xDate.getHours();
var Minutes = leadingZero(xDate.getMinutes());
var ampm = "AM";
	
	if (Hours > 11) 
		ampm = "PM";
    if (Hours > 12) 
			Hours -= 12 ;
	Hours = leadingZero(Hours);

	return Hours + ":" + Minutes + " " + ampm		


}

function leadingZero(nr)
{
	if (nr < 10) nr = "0" + nr;
	return nr;
}

var browserType;

if (document.layers) {browserType = "nn4"}
if (document.all) {browserType = "ie"}
if (window.navigator.userAgent.toLowerCase().match("gecko")) {browserType= "gecko"}

function hideDiv(xDivID) {
  if (browserType == "gecko" )
     document.poppedLayer = eval('document.getElementById(\'' + xDivID +'\')');
  else if (browserType == "ie")
     document.poppedLayer = eval('document.all[\'' + xDivID +'\']');
  else
     document.poppedLayer = eval('document.layers[\'' + xDivID +'\']');
  document.poppedLayer.style.visibility = "hidden";
  document.poppedLayer.style.display = "none";

}

function showDiv(xDivID) {
  if (browserType == "gecko" )
     document.poppedLayer = eval('document.getElementById(\'' + xDivID +'\')');
  else if (browserType == "ie")
     document.poppedLayer = eval('document.all[\'' + xDivID +'\']');
  else
     document.poppedLayer = eval('document.layers[\'' + xDivID +'\']');
  document.poppedLayer.style.visibility = "visible";
  document.poppedLayer.style.display = "block";
}

function clearallforms() {
  var forms = document.forms;
  var i, form, ic
  ic = forms.length;
  for(i = 0; i < ic; i++)
  {
    form = forms[i];
	clearform(form[i]);
  }
  return true;
}

function clearform(myform) {
   form = myform;
    jc = form.elements.length;
    for (j = 0; j < jc; j++)
    {
      elm = form.elements[j];
      switch(elm.type) {
      case "checkbox":
		elm.checked =  false;
		break;
      case "text":
		elm.value =  "";
		break;
      case "textarea":
		elm.value =  "";
		break;
      case "password":
		elm.value =  "";
		break;
      case "select-one":
		elm.value =  "";
		break;
     case "select-many":
		for(var i = 0;i < elm.length;i++){
			elm.options[i].selected = false;
		}
		break;
      }
    }

  return true;
}

/************************************************************************************************************
	(C) www.dhtmlgoodies.com, October 2005
	
	This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	
	
	Terms of use:
	You are free to use this script as long as the copyright message is kept intact. However, you may not
	redistribute, sell or repost it without our permission.
	
	Thank you!
	
	Updated:	April, 6th 2006, Using iframe in IE in order to make the tooltip cover select boxes.
	
	www.dhtmlgoodies.com
	Alf Magne Kalleland

	Modified May 30, 2006 by Benjamin Krajmalnik to provide for dynamic relocation on tooltip when page is scrolled.
	Tested on IE6. Mozilla, and Opera 8
	
	************************************************************************************************************/	
	var dhtmlgoodies_tooltip = false;
	var dhtmlgoodies_tooltipShadow = false;
	var dhtmlgoodies_shadowSize = 2;
	var dhtmlgoodies_tooltipMaxWidth = 400;
	var dhtmlgoodies_tooltipMinWidth = 50;
	var dhtmlgoodies_iframe = false;
	var tooltip_is_msie = (navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('opera')==-1 && document.all)?true:false;
	function showTooltip(e,tooltipTxt)
	{
		
		var bodyWidth = Math.max(document.body.clientWidth,document.documentElement.clientWidth) - 20;
		var bodyHeight = document.body.clientHeight - 20;
	
		if(!dhtmlgoodies_tooltip){
			dhtmlgoodies_tooltip = document.createElement('DIV');
			dhtmlgoodies_tooltip.id = 'dhtmlgoodies_tooltip';
			dhtmlgoodies_tooltipShadow = document.createElement('DIV');
			dhtmlgoodies_tooltipShadow.id = 'dhtmlgoodies_tooltipShadow';
			
			document.body.appendChild(dhtmlgoodies_tooltip);
			document.body.appendChild(dhtmlgoodies_tooltipShadow);	
			
			if(tooltip_is_msie){
				dhtmlgoodies_iframe = document.createElement('IFRAME');
				dhtmlgoodies_iframe.frameborder='5';
				dhtmlgoodies_iframe.style.backgroundColor='#FFFFFF';
				dhtmlgoodies_iframe.src = 'tooltip.html'; 	
				dhtmlgoodies_iframe.style.zIndex = 100;
				dhtmlgoodies_iframe.style.position = 'absolute';
				document.body.appendChild(dhtmlgoodies_iframe);
			}
			
		}
		
		dhtmlgoodies_tooltip.style.display='block';
		dhtmlgoodies_tooltipShadow.style.display='block';
		if(tooltip_is_msie)dhtmlgoodies_iframe.style.display='block';
		
		var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
		var st2 = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);

		if (e.pageX) {
			leftPos = e.pageX + 10;
			topPos = e.pageY + 10;
		}
		else if (e.clientX)
		{
			leftPos = e.clientX + 10 + st2;
			topPos = e.clientY + 10 + st;
		}
		
		dhtmlgoodies_tooltip.style.width = null;	// Reset style width if it's set 
		dhtmlgoodies_tooltip.innerHTML = tooltipTxt;
		dhtmlgoodies_tooltip.style.left = leftPos + 'px';
		dhtmlgoodies_tooltip.style.top = e.clientY + 10 + st + 'px';

		
		dhtmlgoodies_tooltipShadow.style.left =  leftPos + dhtmlgoodies_shadowSize + 'px';
		dhtmlgoodies_tooltipShadow.style.top = topPos + dhtmlgoodies_shadowSize + 'px';
		
		var tooltipWidth = Math.max(tooltipTxt.length * 6,dhtmlgoodies_tooltip.offsetWidth) ;
		
		if(tooltipWidth<dhtmlgoodies_tooltipMinWidth)tooltipWidth = dhtmlgoodies_tooltipMinWidth;

		if(tooltipWidth>dhtmlgoodies_tooltipMaxWidth){	/* Exceeding max width of tooltip ? */
			tooltipWidth = dhtmlgoodies_tooltipMaxWidth ;
		}
		
		
		dhtmlgoodies_tooltip.style.width = tooltipWidth + 'px';
		dhtmlgoodies_tooltipShadow.style.width = tooltipWidth  + 'px';

		var tooltipHeight = dhtmlgoodies_tooltip.offsetHeight;
		dhtmlgoodies_tooltipShadow.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';		
		

		if((leftPos + tooltipWidth)>bodyWidth + st2){
			leftPos = bodyWidth + st2 - (tooltipWidth+20);
		}
		if((topPos + tooltipHeight)>bodyHeight + st){
				topPos = bodyHeight+st - (tooltipHeight+20);
		}
		dhtmlgoodies_tooltip.style.left = leftPos + 'px';
		dhtmlgoodies_tooltipShadow.style.left  = leftPos + dhtmlgoodies_shadowSize + 'px';
		dhtmlgoodies_tooltip.style.top = topPos + 'px';
		dhtmlgoodies_tooltipShadow.style.top = topPos + dhtmlgoodies_shadowSize + 'px';
		if(tooltip_is_msie){
			dhtmlgoodies_iframe.style.left = dhtmlgoodies_tooltip.style.left;
			dhtmlgoodies_iframe.style.top = dhtmlgoodies_tooltip.style.top;
			dhtmlgoodies_iframe.style.width = dhtmlgoodies_tooltip.offsetWidth + 'px';
			dhtmlgoodies_iframe.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';
		
		}
				
	}
	
	function hideTooltip()
	{
		dhtmlgoodies_tooltip.style.display='none';
		dhtmlgoodies_tooltipShadow.style.display='none';		
		if(tooltip_is_msie)dhtmlgoodies_iframe.style.display='none';		
	}
	

function getFormElement(name, type){

	if(document.getElementsByName){

		var elements = document.getElementsByName(name);

		if(!type) return elements[0];

		for(var e = 0; e < elements.length; e++){
			if(elements[e].type == type) return elements[e];
		}

		return false;
	}

	for(var f = 0; f < document.forms.length; f++){
		for(var e = 0; e < document.forms[f].elements.length; e++){

			if(document.forms[f].elements[e].name != name) continue;

			if(!type) return document.forms[f].elements[e];

			if(document.forms[f].elements[e].type == type) return document.forms[f].elements[e];
		}
	}
}


//*****************************************************************************
// @author		Jan Marsch <jama@keks.com>
// @version		0.9 @ 2003-09-27 12:00
// @copyright	You might use and distribute this for free as long
//				as you keep this header notice.
//*****************************************************************************

function toCombo(selectName, buttonName){

	//****** Constructor ******************************************************
	//*************************************************************************

	//****** find & init Select element ******

	if(!selectName){
		window.status = "ComboBox Error: Select name required.";
		return false;
		}

	var selectObj = getFormElement(selectName, "select-one");

	if(selectObj == false){
		window.status = "ComboBox '"+selectName+"' Error: Select element not found.";
		return false;
	}

	this.selectObj = selectObj;

	//****** find & init Button element ******

	if(!buttonName){
		if(!document.createElement){
			window.status = "ComboBox '"+selectName+"' Error: Button name required.";
			return false;
		}
	}else{
		var buttonObj = getFormElement(buttonName, "button");

		if(buttonObj == false){
			if(!document.createElement){
				window.status = "ComboBox '"+selectName+"' Error: Button element not found.";
				return false;
			}
		}else{
			if(!document.createElement){
				this.buttonObj = buttonObj;
			}else{
				buttonObj.parentNode.removeChild(buttonObj);
			}
		}
	}

	//****** init Text element ******

	if(!document.createElement){
		this.textObj = new Object();
	}else{
		this.textObj = document.createElement("input");
		this.textObj.type = "text";

		if(this.selectObj.style.width) this.textObj.style.width = this.selectObj.style.width;
		if(this.selectObj.className)   this.textObj.className   = this.selectObj.className;

		this.textObj.autocomplete = "off";
	}

	//*********************************

	this.selectedIndex = -1;
	var handler = this;

	//*********************************

	if(!this.buttonObj){

		this.selectObj.onkeydown = function(e){
			var key = 0;

			if(!e) var e = window.event;

			if(e.keyCode){
				key = e.keyCode;
			}else{
				if(e.which) key = e.which;
			}

			switch(key){
				case 33:	// PAGE UP
				case 34:	// PAGE DOWN
				case 35:	// END
				case 36:	// HOME
				case 37:	// CURSOR LEFT
				case 38:	// CURSOR UP
				case 39:	// CURSOR RIGHT
				case 40:	// CURSOR DOWN
				case 27:	// ESCAPE
					return;

				default:
					handler.textMode();
			}
		}
	}

	//*********************************

	if(!this.buttonObj){

		this.textObj.onkeyup = function(e){
			var key = 0;

			if(!e) var e = window.event;

			if(e.keyCode){
				key = e.keyCode;
			}else{
				if(e.which) key = e.which;
			}

			switch(key){
				case  8:	// BACKSPACE
				case 33:	// PAGE UP
				case 34:	// PAGE DOWN
				case 35:	// END
				case 36:	// HOME
				case 37:	// CURSOR LEFT
				case 38:	// CURSOR UP
				case 39:	// CURSOR RIGHT
				case 40:	// CURSOR DOWN
				case 45:	// INSERT
				case 46:	// DELETE
					return;

				case 27:	// ESCAPE
					handler.selectMode(true);
					return;

				case  9:	// TAB (?)
				case 13:	// RETURN
					handler.selectMode();
					return;

				default:
					for(var i = 0; i < handler.selectObj.options.length; i++){
						if(handler.selectObj.options[i].text.toLowerCase().indexOf(this.value.toLowerCase()) != 0) continue;

						handler.selectedIndex = i;

						if(this.value.length == handler.selectObj.options[i].text.length) return;

						var input  = this.value;

						if(!this.setSelectionRange && !this.createTextRange) return;

						this.value = handler.selectObj.options[i].text;

						if(this.setSelectionRange){
							this.setSelectionRange(input.length, this.value.length);
							return;
						}

						var range = this.createTextRange()
						range.moveStart("character", input.length)
						range.select()
						return;
					}

					handler.selectedIndex = -1;
					return;
			}
		}
	}

	//*********************************

	if(!this.buttonObj){

		this.textObj.onblur = function(event){
			handler.selectMode();
		}
	}

	//*********************************

	if(this.buttonObj){

		this.buttonObj.onclick = function(){

			handler.textObj.value = prompt("", (handler.selectObj.options[0].text == " ") ? "" : handler.selectObj.options[0].text);

			if(handler.textObj.value == null || handler.textObj.value == ""){
				handler.selectMode(true);
				return;
			}

			for(var i = 0; i < handler.selectObj.options.length; i++){
				if(handler.selectObj.options[i].text.toLowerCase().indexOf(handler.textObj.value.toLowerCase()) != 0) continue;

				handler.selectedIndex = i;

				if(handler.textObj.value.length == handler.selectObj.options[i].text.length){
					handler.selectMode();
					return;
				}
			}

			handler.selectedIndex = -1;
			handler.selectMode();
			return;
		}
	}

	//*********************************

	this.selectMode = function(cancel){

		if(!this.buttonObj){
			this.textObj.parentNode.insertBefore(this.selectObj, this.textObj.nextSibling);
			this.textObj.parentNode.removeChild(this.textObj);
		}

		if(!cancel){
			if(this.selectedIndex == -1){
				this.selectObj.options[0].value = this.textObj.value;
				this.selectObj.options[0].text  = (this.textObj.value == "") ? " " : this.textObj.value;

				this.selectObj.selectedIndex = 0;
			}else{
				this.selectObj.selectedIndex = this.selectedIndex;
			}

			this.textObj.value = "";
		}

		this.selectObj.focus();
	}

	//*********************************

	this.textMode = function(cancel){

		this.selectObj.parentNode.insertBefore(this.textObj, this.selectObj.nextSibling);
		this.selectObj.parentNode.removeChild(this.selectObj);

		this.selectedIndex = this.selectObj.selectedIndex;

		this.textObj.value = (this.selectObj.options[0].text == " ") ? "" : this.selectObj.options[0].text;

		this.textObj.select();
	}
}


//  End -->
