function replaceIsNull(a, b){
	if(a == ''){
		return b;
	}else{
		return a;
	}
}

function displayYear(){
	var todaysDate = new Date();
	var todaysYear = todaysDate.getFullYear();
	document.write(''+todaysYear);
}

function daysDifferent(dt1, dt2){
	var OneDay = 1000*60*60*24
	if(dt1 == ''){
		var now = new Date();
		var date1 = new Date(now.getFullYear(), now.getMonth(), now.getDate());
	}else{
		var dtArray1 = dt1.split('-');
		var date1 = new Date(dtArray1[0], dtArray1[1]-1, dtArray1[2]);
	}
	
	var dtArray2 = dt2.split('-');
	var date2 = new Date(dtArray2[0], dtArray2[1]-1, dtArray2[2]);
	
	   var date1MS = date1.getTime()
	   var date2MS = date2.getTime()
	var diffMS = Math.abs(date1MS - date2MS)
	if (date1MS > date2MS){
		return '-' + Math.round(diffMS/OneDay)
	}else{
		return Math.round(diffMS/OneDay)
	}
}

function trim(s){
	while (s.substring(0,1) == ' ') {
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' ') {
		s = s.substring(0,s.length-1);
	}
	return s;
}


function selectAll(formItem) {
	for (i=0;i<formItem.options.length;i++){
		formItem.options[i].selected = true;
	}
}

function numbersOnly(name, form_element){
	//Only allow 0-9
	var checkOK = "0123456789";
	var checkStr = form_element.value;
	var allValid = true;
	var allNum = "";
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length)
		{
		allValid = false;
		break;
		}
		if (ch != ",")
		allNum += ch;
	}
	if (!allValid){
		alert('Please enter only numbers in the field ' + name);
		form_element.focus();
		form_element.select();
		return false;
	}else{
		return true;
	}
}

function lettersOnly(form_element){
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	var checkStr = form_element;
	var allValid = true;
	var allNum = "";
	for (i = 0;  i < checkStr.length;  i++){
	  ch = checkStr.charAt(i);
	  for (j = 0;  j < checkOK.length;  j++)
	    if (ch == checkOK.charAt(j))
	      break;
	  if (j == checkOK.length)
	  {
	    allValid = false;
	    break;
	  }
	  if (ch != ",")
	    allNum += ch;
	}
	if (!allValid){
		return false;
	}
}

function alphaNumeric(form_element){
	//Only allow 0-9
	var checkOK = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	var checkStr = form_element.value;
	var allValid = true;
	var allNum = "";
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length){
			allValid = false;
			break;
		}
		if (ch != ",")
		allNum += ch;
	}
	if (!allValid){
		return false;
	}else{
		return true;
	}
}

function outputComma(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

function countInst(string, item) {
	var substrings = string.split(item);
	return substrings.length - 1;
}

function zeroFill(n){
	if(n == 1 || n==2 || n==3 || n==4 || n==5 || n==6 || n==7 || n==8 || n==9){
		return "0" + n
	}else{
		return n
	}
}


function roundIt(Num, Places) {
   if (Places > 0) {
      if ((Num.toString().length - Num.toString().lastIndexOf('.')) > (Places + 1)) {
         var Rounder = Math.pow(10, Places);
         return Math.round(Num * Rounder) / Rounder;
      }
      else return Num;
   }
   else return Math.round(Num);
}


function check_blank_field(field, caption){
	if(is_blank(field)){
		var prefix = "Please enter a ";
		if(caption.substring(caption.length-1, caption.length) == 's'){prefix = "Please enter "}
		if(is_vowel(caption.substring(0,1))){prefix = "Please enter an "}
		if(caption.charAt(0,1) == 'U' || 'u'){prefix = "Please enter a "}
		alert(prefix + caption)
		return false
	} 
	return true
}

function outputMoney(number) {
    return outputDollars(Math.floor(number-0) + '') + outputCents(number - 0);
}

function outputDollars(number) {
    if (number.length <= 3)
        return (number == '' ? '0' : number);
    else {
        var mod = number.length%3;
        var output = (mod == 0 ? '' : (number.substring(0,mod)));
        for (i=0 ; i < Math.floor(number.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        return (output);
    }
}

function outputCents(amount) {
    amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
    return (amount < 10 ? '.0' + amount : '.' + amount);
}
		
function is_vowel(x){
	if(x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u' || x == 'A' || x == 'E' || x == 'I' || x == 'O' || x == 'U'){
		return true
	} else {
		return false
	}
}

function is_blank(form_element){
	if(RTrim(form_element.value).length < 1){
		form_element.focus()
		form_element.select()
	return true;
	}
	return false;
}
	
	
function RTrim (originalString) {
	var pos = 0
	pos = originalString.length
	while (originalString.substring(pos-1, pos) == " ") {
		originalString = originalString.substring(0, pos-1)
		pos = pos - 1
	}
	return originalString
}			


function is_Valid_Email(form_element) {
	if (form_element.value.indexOf("@") + "" != "-1" && form_element.value.indexOf(".") + "" != "-1" && form_element.value != "")
	return true;
	else {
		alert("Please Enter a Valid Email Address");
		form_element.focus();
	return false;
	}
}

function isValidEmailNullable(form_element) {
	if (form_element.value.length == 0){
		return true;
	}else{
		if (form_element.value.indexOf("@") + "" != "-1" && form_element.value.indexOf(".") + "" != "-1" && form_element.value != "")
		return true;
		else {
			alert("The Email Address you have entered is not valid.");
			form_element.focus();
		return false;
		}
	}
}

function isValidName(form_element, caption){
	if(form_element.value.indexOf(' and ') >= 0 || form_element.value.indexOf(' or ') >= 0 || form_element.value.indexOf('(') >= 0 || form_element.value.indexOf(')') >= 0 || form_element.value.indexOf('[') >= 0 || form_element.value.indexOf(']') >= 0 || form_element.value.indexOf('{') >= 0 || form_element.value.indexOf('}') >= 0 || form_element.value.indexOf('/') >= 0 || form_element.value.indexOf('|') >= 0 || form_element.value.indexOf('~') >= 0 || form_element.value.indexOf('<') >= 0 || form_element.value.indexOf('>') >= 0){
		alert('Please enter only your name in the ' + caption + ' field. This should\n' + caption + ' be one and should not contain multiple entries.');
		form_element.focus();
		return false;
	}else{
		return true;
	}
}

function is_please_choose(form_element, caption) {
	if ((form_element.selectedIndex == 0)) {
		var prefix = "Please make a selection for ";
		if(caption.substring(caption.length-1, caption.length) == 's'){prefix = "Please make a selection for "}
		if(is_vowel(caption.substring(0,1))){prefix = "Please make a selection for "}
		alert(prefix + caption)
	return false
	}
	return true
}

function isCorrectLen(formElement, lngth, name, typ){
	if(typ == 'E'){
		if(formElement.value.length != lngth){
			alert('The ' + name + ' must be ' + lngth + ' characters in length');
			formElement.focus();
			return false;
		}else{
			return true;
		}
	}else if(typ == 'M'){
		if(formElement.value.length < lngth){
			alert('The ' + name + ' must be at least ' + lngth + ' characters in length');
			formElement.focus();
			return false;
		}else{
			return true;
		}
	}else{
		return true;
	}
}

function getYear(d){return (d < 1000) ? d + 1900 : d;}

function isValidDate (year, month, day) {
  var tempDate = new Date(year,month,day);
  alert(tempDate);
  if ((getYear(tempDate.getYear()) == year) && (month == tempDate.getMonth()) && (day == tempDate.getDate()) )
      return true;
  else
     return false
}

function getSelRadioVal(el){
    for ( var i=0; i<el.length; i++ ){
         if ( el[i].checked == true ){
			return el[i].value;
         }
    }
}

function DateAdd(datepart, number, date){
    // Create 3 error messages, 1 for each argument. 
    var dateMsg = "The date parameter of the DateAdd\n"
        dateMsg += "function must be a valid date format." ;
    var datepartMsg = "The DateAdd function only accepts\n"
        datepartMsg += "d, h, m OR s dateparts."
    var numberMsg = "The number parameter of the DateAdd\n"
        numberMsg += "function must be numeric."
		
    var buffer = Date.parse(date) ;
	
    if (isNaN(buffer)){
		alert(dateMsg);
		return null;
	}
    if (datepart.charAt == 'undefined'){
        alert( datepartMsg ) ;
        return null ;
    }
    if (isNaN(number))	{
        alert(numberMsg);
        return null ;
    }

    switch(datepart.charAt(0))
    {
        case 'd': case 'D': 
            number *= 24; // days to hours
        case 'h': case 'H':
            number *= 60; // hours to minutes
        case 'm': case 'M':
            number *= 60; // minutes to seconds
        case 's': case 'S':
            number *= 1000; // seconds to milliseconds
            break 
        default:
        alert(datepartMsg);
        return null;
    }
    return new Date(buffer + number);
}


function moveUpList(listField) {
   if ( listField.length == -1) {//If the list is empty
      alert("There are no values which can be moved!");
   } else {
      var selected = listField.selectedIndex;
      if (selected == -1) {
         alert("You must select an entry to be moved!");
      } else { //Something is selected
         if ( listField.length == 0 ) { // If there's only one in the list
            alert("There is only one entry!\nThe one entry will remain in place.");
         } else {// There is more than one in the list - rearrange the list order
            if ( selected == 0 ) {
               alert("The first entry in the list cannot be moved up.");
            } else {// Get the text/value of the one directly above the hightlighted entry as well as the highlighted entry; then flip them
               var moveText1 = listField[selected-1].text;
               var moveText2 = listField[selected].text;
               var moveValue1 = listField[selected-1].value;
               var moveValue2 = listField[selected].value;
               listField[selected].text = moveText1;
               listField[selected].value = moveValue1;
               listField[selected-1].text = moveText2;
               listField[selected-1].value = moveValue2;
               listField.selectedIndex = selected-1; // Select the one that was selected before
            }
         }
      }
   }
}

function moveDownList(listField) {
   if (listField.length == -1) {//If the list is empty
      alert("There are no values which can be moved!");
   } else {
      var selected = listField.selectedIndex;
      if (selected == -1) {
         alert("You must select an entry to be moved!");
      } else {//Something is selected
         if ( listField.length == 0 ) {//If there's only one in the list
            alert("There is only one entry!\nThe one entry will remain in place.");
         } else {//There is more than one in the list, rearrange the list order
            if ( selected == listField.length-1 ) {
               alert("The last entry in the list cannot be moved down.");
            } else {//Get the text/value of the one directly below the hightlighted entry as well as the highlighted entry; then flip them
               var moveText1 = listField[selected+1].text;
               var moveText2 = listField[selected].text;
               var moveValue1 = listField[selected+1].value;
               var moveValue2 = listField[selected].value;
               listField[selected].text = moveText1;
               listField[selected].value = moveValue1;
               listField[selected+1].text = moveText2;
               listField[selected+1].value = moveValue2;
               listField.selectedIndex = selected+1; // Select the one that was selected before
            }
         }
      }
   }
}

var dtCh= "/";
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;
}

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++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four, except for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr, msg){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day " + msg)
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month " + msg)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date " + msg)
		return false
	}
return true
}

function Mid(str, start, len){
	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);
	}
}

 function Len(str){
 	return String(str).length;
}

function Left(str, n){
	if (n <= 0){
	    return "";
	}else if (n > String(str).length){
	    return str;
	}else{
	    return String(str).substring(0,n);
	}
}

function Right(str, n){
    if (n <= 0){
       return "";
    }else if (n > String(str).length){
       return str;
    }else{
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function InStr(strSearch, charSearchFor){
	for (i=0; i < Len(strSearch); i++){
		if (charSearchFor == Mid(strSearch, i, 1)){
			return i;
		}
	}
	return -1;
}

function MonthName(MonthNumber){
	if(MonthNumber == '1' || MonthNumber == '01'){
		return 'January';
	}else if(MonthNumber == '2' || MonthNumber == '02'){
		return 'February';
	}else if(MonthNumber == '3' || MonthNumber == '03'){
		return 'March';
	}else if(MonthNumber == '4' || MonthNumber == '04'){
		return 'April';
	}else if(MonthNumber == '5' || MonthNumber == '05'){
		return 'May';
	}else if(MonthNumber == '6' || MonthNumber == '06'){
		return 'June';
	}else if(MonthNumber == '7' || MonthNumber == '07'){
		return 'July';
	}else if(MonthNumber == '8' || MonthNumber == '08'){
		return 'August';
	}else if(MonthNumber == '9' || MonthNumber == '09'){
		return 'September';
	}else if(MonthNumber == '10'){
		return 'October';
	}else if(MonthNumber == '11'){
		return 'November';
	}else if(MonthNumber == '12'){
		return 'December';
	}
}

function roundCurrency(CCY, Amt){
	if(CCY == 'JPY'){
		return roundIt(Amt, 6)
	}else{
		return roundIt(Amt, 4)
	}
}


// number validation
function IsNumericString(strString, caption) {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;
   var prefix = "Please enter a number in the field for ";

   if (strString.length == 0) return false;
   
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
		 alert(prefix + caption)
         blnResult = false;
         }
      }
   return blnResult;
}   


function chkAlphaNumeric(name, form_element){
	//Only allow 0-9
	var checkOK = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	var checkStr = form_element.value;
	var allValid = true;
	var allNum = "";
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length){
			allValid = false;
			break;
		}
		if (ch != ",")
		allNum += ch;
	}
	if (!allValid){
		alert('Please enter only alphanumeric characters in the field ' + name);
		form_element.focus();
		form_element.select();
		return false;
	}else{
		return true;
	}
}


