﻿// JScript File
function val_show_job()
   { 
  //  document.getElementById('trExtJV').style.display = (document.getElementById('isExJV').checked) ? "block" : "none";     
         
//         var obj = window.document.getElementById('job_title');
 try{
         if (window.document.getElementById('job_title').value  == ''){return check_txt('job_title')}; 
         if (window.document.getElementById('wa_group').value  == '0'){return check_txt('wa_group')};      
         if (window.document.getElementById('cit').value  == ''){return check_txt('cit')};      
    }
   
 catch(err)
 {
 }
 
}
     
// function aaa()
// { 
//    var myArray = ['job_title','cit'];         
//  //   for (i=0;i<myArray.length;i++;)
//     {              
//        //if (window.document.getElementById(myArray[i]).value == '') {return check_txt(myArray[i])};            
//     }        
// }
  
 function check_txt(obj)
 {
    alert('Please insert field in yellow!'); 
    window.document.getElementById(obj).style.backgroundColor = 'yellow';
    window.document.getElementById(obj).focus();
    return  false;    
 }


function one_click(buttonID)
{   
    document.getElementById(buttonID).disabled = true;
}

function checkKey() { 
var key = event.keyCode; 
if (key == 13) { event.returnValue=false; } 
} 


function CountDisplay(LabelID, max) 
{
    var lbl = document.getElementById(LabelID);
    var tb =  window.event.srcElement;	
    if (tb.value.length  <1) {	 lbl.innerText = "";}
    else{
    if (tb.value.length  > max) { alert('Exceeded maximum text size of ' + max); 
    tb.value = tb.value.substring(0, max); }
    lbl.innerText = "( " + tb.value.length + " / " + max + " ) allowed character"; }}


    function Limitdisplay(TextBoxID,max) {		
    var tb = document.getElementById(TextBoxID);
    if (tb.value.length  > max) { alert('Exceeded maximum text size of ' + max); 
    tb.value = tb.value.substring(0, max); }			
}


function clear_value()
					{
							obj = window.event.srcElement;
							obj.setAttribute("persistValue","");
					}

function divert_entry()
					{
							obj = window.event.srcElement;
							//debugger;
							if  (obj.getAttribute("persistValue") == null)
									obj.setAttribute("persistValue","");                           
							var iKey;
							var eAny_Event = window.event;
			               
							iKey = eAny_Event.keyCode;
			               
							var sChr = String.fromCharCode(iKey);
							if (iKey == 13)  //Carriage Return
							{
									obj.setAttribute("persistValue","");
									return true;
							}

							if ((iKey == 8)) //Backspace , ESC = 33
							{
									sBS_Chr = obj.getAttribute("persistValue");
									obj.setAttribute("persistValue", sBS_Chr.substring(0,sBS_Chr.length - sBS_Chr.length));
									//obj.setAttribute("persistValue", sBS_Chr.substring(0,sBS_Chr.length - 1));
									sChr = '';	
									
							}
							
							
							obj.setAttribute("persistValue",obj.getAttribute("persistValue") + sChr);
							lookupItem(obj);
							
							if (((iKey > 33 && iKey < 255)|| (iKey == 8) || (iKey == 127)) && (iKey != 40) && (iKey != 38) )
									eAny_Event.returnValue = false;
									
					}

function lookupItem(obj)
					{
							var sCurValue = obj.getAttribute("persistValue").toLowerCase();
							var bFound = false;
							var iIndex = obj.selectedIndex;
							var iNumOptions = obj.options.length;
							var iPos = 0;
							// Repeat until found or end of list is reached
							while ((!bFound) && (iPos < iNumOptions))
							{
									// Do comparisons in lowercase
									bFound = (obj.options[iPos].text.toLowerCase().indexOf(sCurValue)==0) ;
									if (bFound)
											iIndex = iPos;
									iPos++;
							}
							if (bFound)
									// Updated listbox
									obj.selectedIndex = iIndex;
}

function MaskPhone()
	{  
		if ((window.event.keyCode != 8)) //Backspace , ESC = 33
		{ 	   
			var fld = window.event.srcElement;         
			var fldVal =fld.value
			var val = ""
			var validNum="1234567890"; 

			//alert(fldVal) ;   
    
			for(var i=0;i<fldVal.length;i++)
			
			{   //DigitsOnly
				if (validNum.indexOf(fldVal.charAt(i)) !=-1  ) {val += (fldVal.charAt(i));}}
		       
				if (val.length < 3 ) { fld.value= "(" + val ;}
				
				else{    
					if (val.length >= 6 ){
						fld.value = "(" + val.substring(0,3) + ") " + val.substring(3,6) + "-" + val.substring(6,10);}
					else{
					if (val.length >= 3 ){
						fld.value = "(" + val.substring(0,3) + ") " + val.substring(3,6);}
					}
			}							
		}  
	}

function MaskCurrency()
{  
  if (window.event.keyCode != 8) //Backspace , ESC = 33
  { 	    
    var fld = window.event.srcElement;         
    var fldVal =fld.value
    var val = ""
    var validNum="1234567890";        
    for(var i=0;i<fldVal.length;i++)
    {   //DigitsOnly
        if (validNum.indexOf(fldVal.charAt(i)) !=-1  ) 
        {
        val += (fldVal.charAt(i));
        }
    }
	       
    if (val.length < 4 ) 
    {
      fld.value=val;
    }
    else
    {    
        if (val.length < 5 ){
            fld.value = val.substring(0,1) + "," + val.substring(1,4);}
        else if(val.length < 6 ){
            fld.value = val.substring(0,2) + "," + val.substring(2,6);}
        else if(val.length < 7 ){
            fld.value = val.substring(0,3) + "," + val.substring(3,7);}
        else if(val.length < 8 ){
            fld.value = val.substring(0,1) + "," + val.substring(1,4)+ "," + val.substring(4,7);}
        else if(val.length < 9 ){
            fld.value = val.substring(0,2) + "," + val.substring(2,5)+ "," + val.substring(5,8);}
        else if(val.length < 10 ){
            fld.value = val.substring(0,3) + "," + val.substring(3,6)+ "," + val.substring(6,9);}
        else if(val.length < 11 ){
            fld.value = val.substring(0,1) + "," + val.substring(1,4)+ "," + val.substring(4,7)+ "," + val.substring(7,10);}
     } 
   }
 }
 
 	

		
		
		
		
		
//  onblur="CheckDate(this);"

 var mlngErrorNumber = 0;
var mstrDateFormat = "US";

function NumberIsPure(Expression) {
  szRef = "0123456789";

  if(Expression.length == 0) return true;

  for(var dwIndex = 0; dwIndex < Expression.length; dwIndex++) {
    var ch = Expression.substr(dwIndex, 1)
    if(szRef.indexOf(ch, 0) == -1) return false;
  }
  return true;
}

function CheckDate(ctl, blnDisplayMsg) {
  if(blnDisplayMsg == null) blnDisplayMsg = true;
  if(!CheckDateFormat(ctl, "US")) {
    if(blnDisplayMsg) {
      alert(DateError(mlngErrorNumber));
      ctl.value = "";
      ctl.focus();
    }
    return false;
  } else {
    return true;
  }
}

function CheckDateEU(ctl, blnDisplayMsg) {
  if(blnDisplayMsg == null) blnDisplayMsg = true;
  if(!CheckDateFormat(ctl, "EU")) {
    if(blnDisplayMsg) {
      alert(DateError(mlngErrorNumber));
      ctl.value = "";
      ctl.focus();
    }
    return false;
  } else {
    return true;
  }
}

function DateError() {
  var szReturn;

  switch(mlngErrorNumber) {
    case 0:
      szReturn = "None";
      break;
    case 1:
      szReturn = "Invalid Format";
      break;
    case 2:
      szReturn = "The day is not numeric";
      break;
    case 3:
      szReturn = "The month is not numeric";
      break;
    case 4:
      szReturn = "The year is not numeric";
      break;
    case 5:
      szReturn = "The month is out of range";
      break;
    case 6:
      szReturn = "The day is out of range";
      break;
    case 7:
      szReturn = "The year is out of range";
      break;
  }
  szReturn = "Date Validation Error: " + szReturn + "\nThe proper date format is ";
  if(mstrDateFormat == "EU")
    szReturn += "DD/MM/YYYY";
  else
    szReturn += "MM/DD/YYYY";
  return szReturn;
}

function CheckDateFormat(ctl, szDateStyle) {
  var strDate;                    //read in value
  var szReturn;                   //return value;
  var aryDate;                    //values split by datepart delim
  var strDay;                     //parsed day
  var strMonth;                   //parsed month
  var strYear;                    //parsed year
  var dwDay;                      //numeric day
  var dwMonth;                    //numeric month
  var dwYear;                     //numeric year
  var blnFound = false;           //datepart delim found in ctl sz
  var dwLoop;                     //loop index
  var aryDelims = new Array("-", " ", "/", ".");
  var aryMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun",
                            "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
  var aryDays = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  //read date and style; abort if not minimum length
  if(szDateStyle == null) szDateStyle = "US";
  mstrDateFormat = szDateStyle;
  strDate = ctl.value;
  if(strDate.length == 0) return true;
  if(strDate.length < 6) {
    mlngErrorNumber = 1;
    return false;
  }

  //split string into dateparts and default century if necessary
  for(dwLoop = 0; dwLoop < aryDelims.length; dwLoop++) {
    if(strDate.indexOf(aryDelims[dwLoop]) != -1) {
      aryDate = strDate.split(aryDelims[dwLoop]);
      if (aryDate.length != 3) {
        mlngErrorNumber = 1;
        return false;
      } else {
        strMonth = aryDate[0];
        strDay = aryDate[1];
        strYear = aryDate[2];
      }
      blnFound = true;
    }
  }
  if(blnFound == false) {
    if(strDate.length > 5) {
      strMonth = strDate.substr(0, 2);
      strDay = strDate.substr(2, 2);
      strYear = strDate.substr(4);
    }
  }
  if(strYear.length == 2) strYear = "20" + strYear;

  //swap dateparts if using dd/mm instead of standard mm/dd
  if(szDateStyle == "EU") {
    var strTemp = strDay;
    strDay = strMonth;
    strMonth = strTemp;
  }

  //numeric datepart checks
  if(!NumberIsPure(strYear)) {
    mlngErrorNumber = 4;
    return false;
  }
  if(!NumberIsPure(strMonth)) {
    mlngErrorNumber = 3;
    return false;
  }
  if(!NumberIsPure(strDay)) {
    mlngErrorNumber = 2;
    return false;
  }

  //range checks
  dwMonth = parseInt(strMonth, 10);
  dwDay = parseInt(strDay, 10);
  dwYear = parseInt(strYear, 10);
  if(((dwYear % 4) == 0) && ((dwYear % 100) != 0) || ((dwYear % 400) == 0)) aryDays[2]++;
  if(dwMonth > 12 || dwMonth < 1) {
    mlngErrorNumber = 5;
    return false;
  }
  if(dwDay < 1 || dwDay > aryDays[dwMonth]) {
    mlngErrorNumber = 6;
    return false;
  }
  if(dwYear < 1000 || dwYear > 9999) {
    mlngErrorNumber = 7;
    return false;
  }

  //format and set ctl value in proper format
  if(strMonth.length == 1) strMonth = "0" + strMonth;
  if(strDay.length == 1) strDay = "0" + strDay;
  if(szDateStyle == "EU")
    szReturn = strDay + "/" + strMonth + "/" + strYear;
  else
    szReturn = strMonth + "/" + strDay + "/" + strYear;
  ctl.value = szReturn;
  return szReturn;
}


//validate email address
function ShowEmailRules() { 
  alert('Invalid Email Address');
}

function IsEmailValid(szEmail, blnAllowHelp) {
  //setup constants (patterns and expressions) for analysis
  var KNOWN_TLD = /^(com|net|org|edu|mil|gov|arpa|biz|aero|name|info)$/;      //okay top-level domains
  var CHECK_TLD = 1;                                                          //1 to check top-level domain
  var EMAIL_ADDRESS_PATTERN = /^(.+)@(.+)$/;                                  //valid email address format
  var SPECIAL_CHARS = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";                        //nasty chars we don't allow
  var INVALID_CHARS = "\[^\\s" + SPECIAL_CHARS + "\]";                        //pattern of forbidden chars
  var QUOTED_USER_PATTERN = "(\"[^\"]*\")";                                   //handles quoted username in addr
  var IP_DOMAIN_PATTERN = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/; //ip domain format; [] required
  var ONE_ATOM = INVALID_CHARS + '+';                                         //series of ok chars
  var ONE_WORD = "(" + ONE_ATOM + "|" + QUOTED_USER_PATTERN + ")";            //word extracted from sz
  var USER_PATTERN = new RegExp("^" + ONE_WORD + "(\\." + ONE_WORD + ")*$");  //user pattern


  if(blnAllowHelp == null) blnAllowHelp = false;

  //tokenize address into pieces for analysis
  var aryMatch = szEmail.match(EMAIL_ADDRESS_PATTERN);
 

 if(aryMatch == null) {
   
 if(blnAllowHelp) {
      if(false) {
        ShowEmailRules();
      } else {
        alert("The basic email address format is invalid");
      }
    } else {
      alert("The basic email address format is invalid");
    }

    return false;

  }

  var szUser = aryMatch[1];
  var szDomain = aryMatch[2];

  //check for only ascii chars in both parts
  for(i = 0; i < szUser.length; i++) {
    if(szUser.charCodeAt(i) > 127) {
      alert("The email username contains invalid characters");
      return false;
    }
  }
  for(i = 0; i < szDomain.length; i++) {
    if (szDomain.charCodeAt(i) > 127) {
      alert("The email hostname contains invalid characters");
      return false;
    }
  }


  //validate user portion
  if(szUser.match(USER_PATTERN) == null) {
    alert("The email username is invalid");
    return false;
  }

  //validate domain portion - ip address format
  var aryIP = szDomain.match(IP_DOMAIN_PATTERN);
  if(aryIP != null) {
    for(var i = 1; i <= 4; i++) {
      if(aryIP[i] > 255) {
        alert("The email IP address is invalid - check octet #" + i);
        return false;
      }
    }
    return true;
  }

  //validate domain portion - name format
  var ptnAtom = new RegExp("^" + ONE_ATOM + "$");
  var aryDomains = szDomain.split(".");

  for(i = 0; i < aryDomains.length; i++) {
    if(aryDomains[i].search(ptnAtom) == -1) {
      alert("The hostname is invalid");
      return false;
    }
  }

  //ensure known or country code for top-level domain
  if(CHECK_TLD && aryDomains[aryDomains.length - 1].length != 2 &&
    aryDomains[aryDomains.length - 1].search(KNOWN_TLD) == -1) {
    alert("The email address must end in a known domain or two letter country code");
    return false;
  }

  //hostname required before tld
  if(aryDomains.length < 2) {
    alert("The email address is missing the hostname");
    return false;
  }

  return true;
}

