<!--  HJRS_JS_ValTools.js, (c) 2004-2009 HJR SOFTWARE 704-825-7440.  Not to be modified without HJR SOFTWARE's prior written permission.
// Requires HJRS_JS_ValStrs.js, getObjs.js, and HJRSFormFieldStyles.css (or modify css names in SetFieldColors())

function CantBeEmpty( oField, sEMsg, oPrompt ) {
  var lRtn = ( oField.value != "" );
  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function MustBeAtLeast( oField, nNum, sEMsg, oPrompt ) {
  var lRtn = ( oField.value.length >= nNum );
  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function MustContain( oField, sStr, sEMsg, oPrompt ) {
  var lRtn = false, x, y = 0;
  
  if ( sStr.length > 0 ) {
    if ( oField.value.length > 0 ) {
      for( x = 0; x < sStr.length; x++ ) {
        if ( oField.value.indexOf(sStr.charAt(x)) > -1 ) {
          y++;
        }
      }
      lRtn = ( y == sStr.length );
    }
  }
  
  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function CanOnlyContain( oField, sStr, sEMsg, oPrompt ) {
  var lRtn = true, x, newString = "";
  
  if ( sStr.length > 0 ) {
    if ( oField.value.length > 0 ) {
      for( x = 0; x < oField.value.length; x++ ) {
        if ( sStr.indexOf(oField.value.charAt(x)) > -1 ) {
          newString += oField.value.substr(x,1);
        }
      }
      oField.value = newString;
    }
  }
  
  return RR(lRtn,oField,oPrompt,sEMsg); 
}


function MustBeExactly( oField, nNum, sEMsg, oPrompt ) {
  var lRtn = ( oField.value.length == nNum );
  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function MustBe1Of2( oField, xChk1, xVal1, xChk2, xVal2, lOrAnd, sEMsg, oPrompt ) {
  var lRtn = true;
  // lOrAnd = true (Or)  / false (And)
  if ( lOrAnd ) {
    lRtn = ( ( xChk1 == xVal1 ) || ( xChk2 == xVal2 ) );
  } else {
    lRtn = ( ( xChk1 == xVal1 ) && ( xChk2 == xVal2 ) );
  }

  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function CantBeMoreThan( oField, nNum, sEMsg, oPrompt ) {
  var lRtn = ( oField.value.length <= nNum );
  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function MustBeIn( oField, sCheckList, sEMsg, oPrompt ) {
  // old MustBeIn() replaced by CanOnlyContain();
  // sCheckList must be in form of "sep|val|sep|val|sep"; sep at start and end. first char used as sep.
  var lRtn = true;
  if ( ( sCheckList == "" ) || ( oField.value == "" ) )
    lRtn = false;
  if (lRtn)
    lRtn = ( sCheckList.indexOf( sCheckList.substr(0,1) + oField.value + sCheckList.substr(0,1) ) > -1 );
  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function ValueMustBe( oField, xChk1, xChk2, iCmp, sEMsg, oPrompt ) {
  var xC = oField.value;
  return ( ValueMustBeIn( oField, xC, xChk1, xChk2, iCmp, sEMsg, oPrompt ) );
}

function ValueMustBeIn( oField, xC, xChk1, xChk2, iCmp, sEMsg, oPrompt ) {
  // iCmp = Comparison between xChk(C) & xVal(v1) (optionally xVal(v2))
  // if iCmp > 0 then Integer Comparion Made. If iCmp < 0 then Floating Comparison Made
  //  1: (C < v1), 2: (C <= v1), 3: (C == v1), 4: (C > v1), 5: (C >= v1)
  //  6: (v1 < C < v2) [between exclusive], 7: (v1 <= C <= v2) [between inclusive]
  //  8: (C < v1 & v2 < C) [outside exclusive], 9: (C <= v1 & v2 <= C) [outside inclusive]
  xC = ( iCmp > 0 ) ? parseInt( xC ) : parseFloat( xC );

  var lRtn = true;

  if ( isNaN( xC ) ) {
    lRtn = false;
  }
  if ( lRtn ) {
    iCmp = Math.abs(iCmp);
    if ( iCmp == 1 ) {  
      lRtn = ( xC < xChk1 );
    }
    if ( iCmp == 2 ) {
      lRtn = ( xC <= xChk1 );
    }
    if ( iCmp == 3 ) {
      lRtn = ( xC == xChk1 );
    }
    if ( iCmp == 4 ) {
      lRtn = ( xC > xChk1 );
    }
    if ( iCmp == 5 ) {
      lRtn = ( xC >= xChk1 );
    }
    if ( iCmp == 6 ) {
      lRtn = ( ( xChk1 < xC ) && ( xC < xChk2 ) );
    }
    if ( iCmp == 7 ) {
      lRtn = ( ( xChk1 <= xC ) && ( xC <= xChk2 ) );
    }
    if ( iCmp == 8 ) {
      lRtn = ( ( xC < xChk1 ) && ( xChk2 < xC ) );
    }
    if ( iCmp == 9 ) {
      lRtn = ( ( xC <= xChk1 ) && ( xChk2 <= xC ) );
    }
  }
  return RR(lRtn,oField,oPrompt,sEMsg); 
}

function GetPromptObj( oField ) {
  var sId = oField.id;

  if ( sId ) {
    sId = sId.substr( 0, sId.length - 1 ) + "P";
    return( hGetObj( sId ) );
  } else {
    return( "" );
  }
}

function IsFieldRequired( oField ){
  var sId = oField.id, oTest, oFFM, i,s, r = false;
  
  if ( sId ) {
    sId = sId.substr(0, sId.length - 1 );
    oFFM = document.getElementById("hjrsFFM");
	r = true;
	if ( oFFM ) {
	  i = oFFM.value.indexOf("~" + sId);
	  if ( i > 0 ) {
	    s = oFFM.value.substr(i+sId.length+2,10);
	    i = s.indexOf(",");
	    s = s.substr(0,i);
	    r = ( s.indexOf("T") > -1);
      }
    }
  }
  return r;
}

function SetFieldColors( lGood, oField, oPrompt ) {
  oField.className = ( lGood == true ) ? "IF" : "IFe";
  if ( oPrompt ) {
    oPrompt.className = ( lGood == true ) ? "IP" : "IPe";
  }
}

function RR( lRtn, oF, oP, sE ) {
  SetFieldColors( lRtn, oF, oP );
  if ( ! lRtn ) {
    if (sE) alert( sE );
    oF.focus();
  }   
  return (lRtn);  
}
//-->
