// left trim a string
function cs_LTrim(thisParam) {
  var thisChar,param = thisParam;
  if (param) {
    for (var i=0; i<=param.length; i++) {
      thisChar = param.charAt(i);
      if ((thisChar != ' ') && (thisChar != String.fromCharCode(10)) && (thisChar != String.fromCharCode(13))) break;
    }  
  }  
  return param.substr(i,param.length);
}                      

// right trim a string
function cs_RTrim(thisParam) {
  var thisChar, param = thisParam;
  if (param) {
    var i = param.length;
    while (i > 0) {
      i -= 1;
      thisChar = param.charAt(i);
      if ((thisChar != ' ') && (thisChar != String.fromCharCode(10)) && (thisChar != String.fromCharCode(13))) break;
    }  
  }  
  return param.substr(0,i+1);
}                      

// trim a string (deprecated - do not use)
function cs_Trim(thisParam) {
  var param = thisParam;
  if (param) {
    param = cs_LTrim(param);
    param = cs_RTrim(param);
  }  
  return param;
}                      

// split long params into ODBC compliant chunks
function cs_PrepareLongText(param) {
  var cODBCDelimiter='","';
  var strLength = parseInt(param.length);
  var paramStr = '',strVal = '',delimiterStr = '',k=0,j=0;
  for (var i=0; i<strLength; ++i) {
    ++j;
    strVal += param.charAt(i);
    if (j==128) {
	  k++
	  if (k > 1) delimiterStr = cODBCDelimiter;
      paramStr += delimiterStr + strVal;
      j=0;
      strVal = '';
    }
  }
  if (strVal.length > 0) {
    ++k;
    if (k > 1) delimiterStr = cODBCDelimiter;
    paramStr += delimiterStr + strVal;
  }
  return paramStr;
}

// check for valid integer and floating point numbers
function cs_IsNaN(param) {
/*
Backward compatability
Use cs_IsNumeric() instead
*/
  if (!param) return true;
  if (isNaN(param.split(',').join(''))) return true;
  var j=0,n=0;
  if (param.lastIndexOf('.') != -1) {
    if (param.substr(param.lastIndexOf('.'),param.length).indexOf(',') != -1) return true;
    if (param.charAt(param.length-1) == '.') return true; 
    param = param.substr(0,param.lastIndexOf('.'));
  }
  if (param.lastIndexOf(',') != -1) {
    var ar = new Array();
    for (j=0; j<param.length; j++) {
      ar[j] = param.charAt(j);
    }
    ar.reverse();
    for (j=0; j<param.length; j++) {
      n++;
      if (ar[j] == ",") if (n==4) n=0; else return true;
      if (n>3) return true;
    }
  }  
  return false;
}

// test for valid integer values
// allows any integer only value greater than or equal to zero: 
function cs_IsInteger(param) {
  var re = /^[0-9]+[0-9]*$/
  if (re.test(param)) return true;
  return false
}                      

// test for valid floating point numeric values
// Matches all positive & negative decimal floating point numbers, to any magnitude. Allows empty string. 
function cs_IsNumeric(param) {
  if (!param) return false; // backward compatability - deprecate
  var re = /^-?\d*(\.\d+)?$/
  if (re.test(param)) return true;
  return false
}

// round a number to the nearest decimal point
function cs_Round(n,precision) {
  var x='1';
  for (var i=0;i<precision;i++) {x+='0';}
  return Math.round(n*x)/x  
}

// expects text or integer dates mmm dd, yyyy
function cs_GetDate(param) {
  var iChars = "!@#$%^&*()_+|\=-~`\|,<>.?/';:}{[]"+'"';
  var dateString = '',chr='',m=0,d=0,y=0;
  var ar0 = new Array(24);
  ar0['jan'] = 0;
  ar0['feb'] = 1;
  ar0['mar'] = 2;
  ar0['apr'] = 3;
  ar0['may'] = 4;
  ar0['jun'] = 5;
  ar0['jul'] = 6;
  ar0['aug'] = 7;
  ar0['sep'] = 8;
  ar0['oct'] = 9;
  ar0['nov'] = 10;
  ar0['dec'] = 11;
  var ar1 = new Array(12);
  ar1[0] = 'January';
  ar1[1] = 'February';
  ar1[2] = 'March';
  ar1[3] = 'April';
  ar1[4] = 'May';
  ar1[5] = 'June';
  ar1[6] = 'July';
  ar1[7] = 'August';
  ar1[8] = 'September';
  ar1[9] = 'October';
  ar1[10] = 'November';
  ar1[11] = 'December';
  for (var i=0; i<param.length; i++) {
    chr = param.charAt(i);
    if (iChars.indexOf(chr) != -1) chr = ' ';
    dateString += chr;
  }
  while (dateString.indexOf('  ') != -1) {
    dateString = dateString.replace('  ',' ');
  }
  var ar2 = dateString.split(' ');
  m = (isNaN(ar2[0]) ? ar0[ar2[0].substr(0,3).toLowerCase()] : ar2[0]-1);
  d = ar2[1];
  y = ar2[2];
  if (isNaN(m)) return false;
  if (isNaN(d)) return false;
  if (isNaN(y)) return false;
  if (y.length == 1) y='200'+y ;
  if (y.length == 2) {
    if ((parseInt(y) > 35) ? y='19'+y : y='20'+y);
  } 
  var mth = m+1;
  if (!(mth>0 && mth<=12)) return false; 
  if (!(d>0 && d<=31)) return false; 
  if ((mth==2) && (y%4!=0 ) && (d>28)) return false;
  if ((mth==2) && (y%4==0) && (d>29)) return false;
  if ((mth==4 || mth==6 || mth==9 || mth==11) && (d>30)) return false;
  var str = ar1[m] + ' ' + d + ',' + ' ' + y;
  return str;
}

// expects text time values hh:mmm:ss
function cs_GetTime(param) {
  while (param.indexOf('.') != -1) param = param.replace('.',':');
  var ar = param.split(':');
  if (isNaN(ar[0])) return null;
  if (isNaN(ar[1])) return null;
  s = (isNaN(ar[2])) ? '00' : ar[2];
  h = (ar[0].length==1) ? '0'+ar[0] : ar[0];
  m = (ar[1].length==1) ? '0'+ar[1] : ar[1];
  s = (s.length==1) ? '0'+s : s;
  if (m.length==1) m = '0'+ m;
  if (s.length==1) s = '0'+ s;
  if (parseInt(h)>23 || parseInt(h)<0) return null;
  if (parseInt(m)>59 || parseInt(h)<0) return null;
  if (parseInt(s)>59 || parseInt(h)<0) return null;
  if (parseInt(h)==24 && (parseInt(m)>0 || parseInt(s)>0)) return null;
  return h + ':' + m + ':' + s;
}

function cs_InStr(searchString,findString) {
  if (!searchString) return false;
  if (!findString) return false;
  if (searchString.indexOf(findString) == -1) return false;
  return true;
}                      

function cs_IsPhoneNumber(param) {
  if (!param) return false;
  var nvValidChars = "0123456789()+- ";
  var cFirstChar = "+";
  var j = parseInt(param.length);
  if (param.indexOf(cFirstChar) != -1) {
    if (param.indexOf(cFirstChar) != 0) return false;
  }
  for (var i=0;i<j;i++) {
    if (nvValidChars.indexOf(param.charAt(i)) == -1) return false;
  }
  return true;
}                      

function cs_IsValidDomain(param) {
  if (!param) return false;
// generic top level domains
  if (cs_InStr(param,".com")) return true;
  if (cs_InStr(param,".net")) return true;
  if (cs_InStr(param,".org")) return true;
  if (cs_InStr(param,".gov")) return true;
  if (cs_InStr(param,".edu")) return true;
  if (cs_InStr(param,".biz")) return true;
  if (cs_InStr(param,".int")) return true;
  if (cs_InStr(param,".mil")) return true;
  if (cs_InStr(param,".rpa")) return true;
  if (cs_InStr(param,".ato")) return true;
  if (cs_InStr(param,".pro")) return true;
  if (cs_InStr(param,".tv")) return true;
  if (cs_InStr(param,".co.")) return true;
  if (cs_InStr(param,".aero")) return true;
  if (cs_InStr(param,".coop")) return true;
  if (cs_InStr(param,".info")) return true;
  if (cs_InStr(param,".name")) return true;
  if (cs_InStr(param,".museum")) return true;
  return false;
}  

function cs_IsURL(param) {
  if (!param) return false;
  if (!cs_InStr(param,".")) return false;
  if (!cs_InStr(param,"http")) return false;
  if (param.indexOf('@') != -1) return false;
  if (!cs_IsValidDomain(param)) return false;
  return true;
}                      

var cs_IsEmail = function(emailAddress, acceptNull, showError) 
{
  return validateEmailAddress(emailAddress, acceptNull, showError);
}

document.write( '<script type="text/javascript" src="/scripts/cs_EmailValidationScripts.js"><\/script>' ) ;
document.write("<scr" + "ipt type='text/javascript' src='/scripts/cs_ParseScript.js'><\/scr" + "ipt>");

