// 
// DO NOT EDIT THIS FILE DIRECTLY.
// 
// This file is generated from an ant task. To make changes
// edit the parent file /WWW/javascript/common/standardFormCheck.js and then
// rerun the ant task create-bar-stdformcheck.
// 
/*BAR*/
function sfc_doTextFieldRequiredCheck(textField, message, showMsg){
   if(typeof(showMsg) == "undefined")
   {
      showMsg = true;
   }
   sfc_doTextFieldRemoveExtraWhiteSpace(textField);
   if (textField.value.length < 1) {
      if(showMsg)
      {
         alert(message);
      }
      textField.focus();
      return false;
   }
   return true;
}
/*BAR*/
function sfc_doTextFieldRemoveWhiteSpace(textField){
   var s = sfc_doRemoveWhiteSpace(textField.value);
   textField.value = s;
}
/*BAR*/
function sfc_doTextFieldRemoveExtraWhiteSpace(textField){
   var s = sfc_doRemoveExtraWhiteSpace(textField.value);
   textField.value = s;
}
/*BAR*/
function sfc_isTextFieldInt(textField){
   textField.value = sfc_doRemoveWhiteSpace(textField.value);
   return sfc_isInt(textField.value);
}
/*BAR*/
function sfc_doTextFieldStandardDateCheck(field, msg){
   if ( sfc_isDate(field.value) ) {
      field.value = sfc_formatDate(field.value);
      return true;
   }
   if ( sfc_doTextFieldStandardDateCheck.arguments.length > 1 )
      alert(msg);
   return false;
}
/*BAR*/
function sfc_doRemoveWhiteSpace(string){
   string = ""+string;
   re=/\s*/g;
   return string.replace(re,"");
}
/*BAR*/
function sfc_doRemoveExtraWhiteSpace(string){
   string=""+string;
   re=/\S+(\s+\S+)*/;
   var match = string.match(re);
   var returnVal = "";
   if(match != null)
   {
      returnVal = match[0];
   }
   return returnVal;
}
/*BAR*/
function sfc_isInt(string){
   var re = /^\d+$/
   return re.test(string);
}
/*BAR*/
function sfc_getDateTodayAdd(days){
   if ( sfc_isInt(days) ) {
      var today = new Date();
      var returnDate = new Date(Date.parse(today)+ ( days * 1000 * 60 * 60 * 24));
      var month = returnDate.getMonth()+1;  // because month is in array format (0 based)
      var year = returnDate.getYear();
      if ( year <= 99 && year > 50 ) {  // IE bug: if year < 2000 then getYear returns 2 digit if year > 2000 it returns 4 digit year
         year = year + 1900;
      }
      if ( year <=50 ) {  // IE bug: if year < 2000 then getYear returns 2 digit if year > 2000 it returns 4 digit year
         year = year + 2000;
      }
      newDate=getFormatToPatternDate(returnDate.getDate(),month,year);
	  return newDate;
      //return month + "/" + returnDate.getDate() + "/" + year;
   }
   return "";
}
/*BAR*/
function sfc_getDateAdd(dateString, days){
   if ( sfc_isDate(dateString) && (sfc_isInt(days) || sfc_isSignedInt(days))) {
      var date = sfc_formatDate(dateString);
      var d = new Date(sfc_getDateYear(date), parseInt(sfc_getDateMonth(date),10)-1, sfc_getDateDay(date))
      /**
       * HACK: This is a slight hack! I found while researching an UBR that
       * this function would always return 10/28/2001 when adding a day. To
       * return the correct day I added an additional hour (3600000 milliseconds).
       * The line below is basically adding the number of specified days + 1 hour.
       * This should still work correctly since the computed date milliseconds
       * was 12 AM and is now 1 AM. This problem may have something to do with
       * daylight savings time.
       */
      var returnDate = new Date(Date.parse(d) + ( days * 1000 * 60 * 60 * 24) + 3600000);
      var month = returnDate.getMonth()+1; // because month is in array format (0 based)
      var year = returnDate.getYear();
      if ( year <= 99 && year > 50 ) {  // IE bug: if year < 2000 then getYear returns 2 digit if year > 2000 it returns 4 digit year
         year = year + 1900;
      }
      if ( year <=50 ) {  // IE bug: if year < 2000 then getYear returns 2 digit if year > 2000 it returns 4 digit year
         year = year + 2000;
      }
      newDate=getFormatToPatternDate(returnDate.getDate(),month,year);
	  return newDate;
	  //return month + "/" + returnDate.getDate() + "/" + year;
   }
   /*else if
   {
    sfc_isNegativeInt
   } */
   else {
      return "";
   }
}
/*BAR*/
function sfc_standardDateStartStop(startDateField, endDateField, wasStartDate, isStartFieldEmptyOK, isEndFieldEmptyOK, OptionalIsStartDateStopDateEqualOK, OptionalUseStandardAlertMessage, OptionalFixEndDateForUser){
   if (OptionalUseStandardAlertMessage == "undefined") {
      OptionalUseStandardAlertMessage = true;
   }
   if (OptionalFixEndDateForUser == "undefined") {
      OptionalFixEndDateForUser = true;
   }
   sfc_doTextFieldRemoveWhiteSpace(startDateField);
   sfc_doTextFieldRemoveWhiteSpace(endDateField);
   var startDateString = sfc_addYearIfMissing(startDateField.value);
   var endDateString = sfc_addYearIfMissing(endDateField.value);
   var updateStart = true;
   var updateEnd = true;
   if (wasStartDate.length < 1) {
      wasStartDate = sfc_getDateTodayAdd(0);
   }
   isStartDateStopDateEqualOK = true;
   if ( sfc_standardDateStartStop.arguments.length > 5 ) {
      if ( sfc_standardDateStartStop.arguments[5] == false) {
         isStartDateStopDateEqualOK = false;
      }
   }
   displayError = true;
   if ( sfc_standardDateStartStop.arguments.length > 6 ) {
      if ( sfc_standardDateStartStop.arguments[6] == false) {
         displayError = false;
      }
   }
   if ( isStartFieldEmptyOK && startDateString.length < 1) {
      updateStart = false;
   } else {
      updateStart = true;
   }
   if ( isEndFieldEmptyOK && endDateString.length < 1) {
      updateEnd = false;
   } else {
      updateEnd = true;
   }
   if ( !(!updateStart || sfc_isDate(startDateString) || (sfc_isInt(startDateString) && (startDateString < 1000)) ) ) {
      if (OptionalUseStandardAlertMessage) {
         alert(PROP_badDateFmt);
         startDateField.focus();
      }
      return false;
   }
   if ( !(!updateEnd || sfc_isDate(endDateString) || (sfc_isInt(endDateString) && (endDateString < 1000)) ) ) {
      if (OptionalUseStandardAlertMessage) {
         alert(PROP_badDateFmt);
         endDateField.focus();
      }
	  return false;
   }
    if ( sfc_isDate(startDateString) ) {
      startDateString = sfc_formatDate(startDateString);
   } else {
      startDateString = sfc_getDateAdd(sfc_getDateTodayAdd(0),startDateString);
   }
   var startDate = new Date(sfc_getDateYear(startDateString), parseInt(sfc_getDateMonth(startDateString),10)-1, sfc_getDateDay(startDateString));
   if ( sfc_isDate(endDateString) ) {
      endDateString = sfc_formatDate(endDateString);
   }else{
      endDateString = sfc_getDateAdd(startDateString,endDateString);
   }
   var endDate = new Date(sfc_getDateYear(endDateString), parseInt(sfc_getDateMonth(endDateString),10)-1, sfc_getDateDay(endDateString));
   var tsdate = startDate.getTime();
   var tedate = endDate.getTime();
   if ((endDate.getTime() < startDate.getTime()) || ((!OptionalIsStartDateStopDateEqualOK) && (endDate.getTime() == startDate.getTime()))) {
// add 5000: fix Netscape bug
      if(OptionalFixEndDateForUser)
      {
         if (isStartDateStopDateEqualOK) {
            endDateString = sfc_getDateAdd(startDateString, 0);
         } else {
            endDateString = sfc_getDateAdd(startDateString, 1);
         }
      }
      if (OptionalUseStandardAlertMessage) {
         if (OptionalIsStartDateStopDateEqualOK) {
             alert(PROP_endDateLessThanStartDate);
         } else {
             alert(PROP_endDateBeforeStart);
         }
         endDateField.focus();
      }
	  if (updateStart) startDateField.value = startDateString;
	  if (updateEnd) endDateField.value = endDateString;
	  return false;
   }
   if (updateStart) startDateField.value = startDateString;
   if (updateEnd) endDateField.value = endDateString;
   return true;
}
/*BAR*/
function isValidOrder(startDateString, endDateString, isEqualOK)
{
   var startDate = sfc_parseDate(startDateString);
   var endDate = sfc_parseDate(endDateString);
   if ( endDate.getTime() < startDate.getTime() ) return false;
   if ( endDate.getTime() > startDate.getTime() ) return true;
   if (isEqualOK == true) return true;
   return false;
}
/*BAR*/
function sfc_formatDate(string){
   var ret = "";
   if (sfc_isDate(string)) {
      ret = sfc_formatDateString(sfc_parseDate(string));
   }
   return ret;
}
/*BAR*/
function sfc_doTextFieldEmailCheck(field, msg, required){
   if ( (required == true) || (required == "true") ) {
      if ( ! sfc_doTextFieldRequiredCheck(field, msg) ){
         return false;
      }
      return true;
   }
   if ( ! sfc_isValidEmail(field.value) ) {
      alert(msg);
      field.focus();
	field.select();
   }
  return true;
}
/*BAR*/
function sfc_isValidEmail(emailStr) {
   var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
   var name = /^(\".*\"|(\w((\.|\-|_){0,1}\w+)*))\@.+/;
   var hostAdd = /.+\@[\w\-\.\_]+\.([a-zA-Z]{2,6})$/;
   var ipAdd = /.+\@(\d{1,3}\.){3}\d{1,3}$/;
  //syntax is valid
  if ((!reg1.test(emailStr) && (name.test(emailStr))) && (hostAdd.test(emailStr) || ipAdd.test(emailStr)))
  {
     //an ip address cannot have numbers > 255 in the address
     var atSymbol = emailStr.indexOf("@", 0);
     var address = emailStr.substring(atSymbol+1, emailStr.length);
     var IPArray = address.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
     if(address == "255.255.255.255" || address == "255.255.255.0")
     {
        return false;
     }
     if (IPArray != null)
     {
       for (var i=1;i<=4;i++)
       {
         if (IPArray[i]>255) return false;
       }
     }
     return true;
  }
  return false;
}
/*BAR*/
function sfc_parseDate(dt) {
   var ret = new Date();
   if (sfc_isDate(dt)) {
      year = sfc_getDateYear(dt);
      month = sfc_getDateMonth(dt);
	  if (month.charAt(0) == "0") {
	     month = month.substring(1,2);
	  }
	  month=""+(parseInt(month)-1);
      day = sfc_getDateDay(dt);
      ret = new Date(year,month,day);
   }
   return ret;
}
/*BAR*/
function sfc_formatDateString(dt) {
	year = dt.getFullYear();//getYear();
	month = dt.getMonth()+1;
	day = dt.getDate();
	ret = getFormatToPatternDate(day,month,year);
	return ret;
}
/*BAR*/
function getDateSeperator(pattern) {
   var ret="";
   if (pattern.indexOf("/") > 0) {
      ret="/";
   }
   else if (pattern.indexOf(".") > 0) {
      ret=".";
   }
   else if (pattern.indexOf("-") > 0) {
      ret="-";
   }
   return ret;
}
/*BAR*/
function getDatePositions(patern,ymd) {
   yearPosition=2;
   monthPosition=0;
   dayPosition=1;
   sep=getDateSeperator(PROP_datePattern);
   arrPatternDateParts=PROP_datePattern.split(sep);
   for (var i = 0 ; i < arrPatternDateParts.length ;i++ ) {
	  if (arrPatternDateParts[i].indexOf("Y") > -1 || arrPatternDateParts[i].indexOf("y") > -1) {
	     yearPosition=i;
	  }
	  else if (arrPatternDateParts[i].indexOf("M") > -1 || arrPatternDateParts[i].indexOf("m") > -1) {
	     monthPosition=i;
	  }
	  else if (arrPatternDateParts[i].indexOf("D") > -1 || arrPatternDateParts[i].indexOf("d") > -1) {
	     dayPosition=i;
	  }
   }
   if (ymd=="Y") {
      return yearPosition;
   }
   else if (ymd=="M") {
      return monthPosition;
   }
   else if (ymd=="D") {
      return dayPosition;
   }
   else return false;
}
/*BAR*/
function sfc_getDateYear(date) {
   var ret="";
   if (date == "") return ret;
   sep=getDateSeperator(PROP_datePattern);
   yearPosition=getDatePositions(PROP_datePattern,"Y");
   if (date.indexOf(sep)<0) {
      ret = getDatePart(date,yearPosition);
   }
   else {
      arrOfDateParts=date.split(sep);
      ret = arrOfDateParts[yearPosition];
   }
   ret +="";
   if ( ret.length <= 2 ) {
      if(parseInt(ret)<=50){ret = "20" + ret;}
      else {ret = "19" + ret;}
   }
   return ret;
}
/*BAR*/
function sfc_getDateMonth(date) {
   var ret="";
   if (date == "") return ret;
   sep=getDateSeperator(PROP_datePattern);
   monthPosition=getDatePositions(PROP_datePattern,"M");
   if (date.indexOf(sep)<0) {
      ret = getDatePart(date,monthPosition);
   }
   else {
      arrOfDateParts=date.split(sep);
      ret = arrOfDateParts[monthPosition];
   }
   ret +="";
   if ( ret.length == 1 ) {
      ret = "0" + ret;
   }
   return ret;
}
/*BAR*/
function sfc_getDateDay(date) {
   var ret="";
   if (date == "") return ret;
   sep=getDateSeperator(PROP_datePattern);
   dayPosition=getDatePositions(PROP_datePattern,"D");
   if (date.indexOf(sep)<0) {
      ret = getDatePart(date,dayPosition);
   }
   else {
      arrOfDateParts=date.split(sep);
      ret = arrOfDateParts[dayPosition];
   }
   ret +="";
   if ( ret.length == 1 ) {
      ret = "0" + ret;
   }
   return ret;
}
/*BAR*/
function getDatePart(date, position) {
   var ret = "";
	  switch (position) {
	     case 0 :
			ret = date.substring(0,2)
		 break
		 case 1 :
			ret = date.substring(2,4)
		 break
		 case 2 :
			ret = date.substring(4)
		 break
	  }
	return ret;
}
/*BAR*/
function getFormatToPatternDate(day,month,year) {
   day=""+day;
   month=""+month;
   year=""+year;
   if (day.length == 1) {
      day="0" + day;
   }
   if (month.length == 1) {
      month="0" + month;
   }
   if ( year.length == 2 ) {
      if(parseInt(year)>50) ret = "19" + year;
      else year = "20" + year;
   } else if ( year.length == 3) {
      year = ""+(parseInt(year)+1900);
   }
   arrDate=new Array();
   n=getDatePositions(PROP_datePattern,"D");
   arrDate[n]=day;
   n=getDatePositions(PROP_datePattern,"M");
   arrDate[n]=month;
   n=getDatePositions(PROP_datePattern,"Y");
   arrDate[n]=year;
   sep=getDateSeperator(PROP_datePattern);
   return arrDate[0]+sep+arrDate[1]+sep+arrDate[2];
}
/*BAR*/
function sfc_isDate(date, isEmptyOK) {
   if (isEmptyOK == true) {
      if (date == "") return true;
   }
	var days = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var ret = true;
	day = sfc_getDateDay(date);
	month = sfc_getDateMonth(date);
	year = sfc_getDateYear(date);
   if (isNaN(day) || isNaN(month) || isNaN(year))
		ret = false;
	else {
		if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {days[1] = 29;}
			else days[1] = 28;
		if (year > 1900 && year < 2070)
			if ((month < 13) && (month > 0)) {
				if ((day > days[month-1]) || (day < 1)) {
					ret = false;
				} else {}
			} else ret = false;
		else  ret = false;
	}
	return ret;
}
/*BAR*/
function sfc_addYearIfMissing(dateString) {
  sep = getDateSeperator(PROP_datePattern);
  var today = sfc_getDateTodayAdd(0);
  date = new Date();
    //the date can be 3/4 which is March 4th.
  if ((dateString.length == 3 &&  dateString.charAt(1) == sep) ) {
      date = new Date();
      var returnDate = dateString+sep+date.getFullYear();
        if (!isValidOrder(today, returnDate, true)) {
            strDate = dateString.substring(0,3);
            strRet =  strDate + sep+(date.getFullYear() +1);
             return  strRet;
           }else
    	return dateString+sep+date.getFullYear();
   }else  if (dateString.length == 5 && dateString.charAt(2) == sep ) {
          strDate = dateString+sep+date.getFullYear();
          if (!isValidOrder(today, strDate, true)) {
                strDate = dateString.substring(0,5);
                strRet =  strDate + sep+(date.getFullYear() +1);
                 return  strRet;
           }else{
    	return dateString+sep+date.getFullYear();
             }
  }else if (dateString.length==4){
                  strDate =   dateString.substring(0,2) + sep + dateString.substring(2,4)
                   strDate =  strDate +sep+date.getFullYear();
                       if (isValidOrder(today, strDate, true))
                             return  strDate;
                       else {
                                strDate = strDate.substring(0,5);
                                sDate = strDate+sep+(date.getFullYear() +1);
                                return  sDate;
                        }
     }
  return dateString;
}
/*BAR*/
function sfc_stringContainsLetters(string)
{
   var letters = /[a-zA-Z_]+/;
   var matchArray = string.match(letters);
   if(matchArray != null)
   {
      return true;
   }
   return false;
}
