// Copyright (c) 2007 Icon Time Systems, Inc.  All rights reserved.

var caclMsg = "You have changed information that requires recalculating your punches.  This may take some time to execute.  Click OK to begin the recalculation process.";

var timeDiv= ":";
var dateDiv= "/";
var timeFmt = "hh:mma/p";
var dateFmt = "mm/dd/yy";
var digits="1234567890";

var MAX_ID_NAME = 16;
var MAX_NAME = 128;
var MAX_NOTE = 256;
var MAX_CLOCK = 20;

var TYPE_HIDDEN = 0;
var TYPE_NONE = 1;
var TYPE_TEXT = 2;
var TYPE_DROP_DOWN = 3;
var TYPE_TIME = 4;
var TYPE_DATE = 5;
var TYPE_INT = 6;
var TYPE_INT2 = 7;
var TYPE_CHECKBOX = 8;
var TYPE_HOURS = 9;
var TYPE_SUPERVISOR = 10;

function daysFeb(year) {
    year = iconYear(year); // see js/common.js
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function month30(month) {
    return ((month == 4) || (month == 6) || (month == 9) || (month == 11));
}

function isInt(val) {
    if (val == null || val == "") return false;
    for (var i=0; i<val.length; i++) {
        if (digits.indexOf(val.charAt(i)) == -1) return false;
    }
    return true;
}

function isFloat(val) {
    if (val == null || val == "") return false;
    if (parseFloat(val,10) != (1 * val)) return false;
    var div0=val.indexOf('.');
    if (div0 != -1) {
        var str=val.substring(div0+1);
        if (str.length > 2) return false;
    }
    return true;
}

function isTime(str) {
    if (str == null || str == "") return false;
    var fmt = /^(\d{1,2}):(\d{2})(a|p)$/;
    var timeArry = str.match(fmt);
    if (timeArry == null) return false;
    var hrs = timeArry[1];
    var min = timeArry[2];
    var mt = timeArry[3];
    if (mt == "" || mt == null || hrs < 0  || hrs > 12) return false;
    if (mt == "" || mt == null || min < 0 || min > 59) return false;
    if (mt == "" || mt == null) return false;
    return true;
}

function isDate(str,type) {
    if (str == null || str == "") return false;
    var div0=str.indexOf(dateDiv);
    var div1=str.indexOf(dateDiv,div0+1);
    do {
        if (div0 == -1 || div1 == -1) break;
        if (type) {
            var strDay=str.substring(0,div0);
            var strMonth=str.substring(div0+1,div1);
        } else { // US style
            var strMonth=str.substring(0,div0);
            var strDay=str.substring(div0+1,div1);
        }
        var strYear=str.substring(div1+1);
        if (strDay.length < 1 || strDay.length > 2 || strMonth.length < 1 || strMonth.length > 2 || strYear.length < 1 || strYear.length > 2) break;
        if (!isInt(strDay) || !isInt(strMonth) || !isInt(strYear)) break;
        if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
        if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
        var year=parseInt(strYear);
        var month=parseInt(strMonth);
        var day=parseInt(strDay);
        if (day < 1 || day > 31 || month < 1 || month > 12 || (month == 2 && day > daysFeb(year)) || (month30(month) && day > 30)) break;
        return true;
    } while(false);
    return false;
}

function trimField(id) {
    var str = document.getElementById(id).value;
    if (str == null || str == "") return str;
    var old = str;
    for (var i=0; str.charAt(i)==" "; i++);
    str = str.substring(i);
    for (var i=str.length-1; str.charAt(i)==" "; i--);
    
   //I think str is suposed to be adjusted here for stripping out the trailing spaces
    //so I changed the logic by adding this line and changing the return line below
    str = str.substring(0,i+1);
    if (str.length != old.length) document.getElementById(id).value = str;
    return str;
  
    //if (str.length != old.length) document.getElementById(id).value = str;
    //return str.substring(0,i+1);
}


function validTime(id) {
    var field = trimField(id);
    if (!isTime(field)) {
        alert("Field value must be a valid time and comply with the standard time format ("+timeFmt+").");
        setTimeout('document.getElementById(\''+id+'\').focus();', 100);
        return false;
    }
    return true;
}

function validDate(id,fmt) {
    var field = trimField(id);
    if (!isDate(field,fmt)) {
        alert("Field value must be a valid date and comply with the standard date format ("+dateFmt+").");
        setTimeout('document.getElementById(\''+id+'\').focus();', 100);
        return false;
    }
    return true;
}

function validInt(id,min,max,str) {
    var field = trimField(id);
    do {
        if (!isInt(field)) {
            if (str.length == 0) str = "Field value must be a valid integer.";
            break;
        }
        if (min != "") min = (min * 1);
        if (max != "") max = (max * 1);
        field = (field * 1);
        if (min != "" && field < min) {
            if (str.length == 0) str = "Field value must not be less than "+min+".";
            break;
        }
        if (max != "" && field > max) {
            if (str.length == 0) str = "Field value must not be greater than "+max+".";
            break;
        }
        return true;
    } while (false);
    alert(str);
    setTimeout('document.getElementById(\''+id+'\').focus();', 100);
    return false;
}

function validFloat(id,min,max,str) {
    var field = trimField(id);
    do {
        if (!isFloat(field)) {
            if (str.length == 0) str = "Field value must be a valid number.";
            break;
        }
        if (min != "" && parseFloat(field) < parseFloat(min)) {
            if (str.length == 0) str = "Field value must not be less than "+min+".";
            break;
        }
        if (max != "" && parseFloat(field) > parseFloat(max)) {
            if (str.length == 0) str = "Field value must not be greater than "+max+".";
            break;
        }
        return true;
    } while (false);
    alert(str);
    setTimeout('document.getElementById(\''+id+'\').focus();', 100);
    return false;
}

function validAccrualFloat(id,min,max,accrual,atype) {
    var field = trimField(id);
	var str = "";
    do {
		if (field.length == 0){
			str = "Field:  "+accrual+ " - " +atype+ "\n\n Issue: Can not be blank";
			break;
		}
        if (!isFloat(field)) {
			str = "Field:  "+accrual+ " - " +atype+ "\n\n Issue: Not a valid number";
            break;
        }
        if (min != "" && parseFloat(field) < parseFloat(min)) {
            str = "Field:  "+accrual+ " - " +atype+ "\n\n Issue: Value can not be smaller than "+min;
            break;
        }
        if (max != "" && parseFloat(field) > parseFloat(max)) {
            str = "Field:  "+accrual+ " - " +atype+ "\n\n Issue:  Value can not be larger than "+max;
            break;
        }
        return true;
    } while (false);
    alert(str);
    setTimeout('document.getElementById(\''+id+'\').focus();', 100);
    return false;
}

function validText(id,min,max,str) {
    var field = trimField(id);
    do {
        if (min != "") min = (min * 1);
        if (max != "") max = (max * 1);
        if (min != "" && field.length < min) {
            if (str.length == 0) str = "Field value must not be less than "+min+" in length.";
            break;
        }
        if (max != "" && field.length > max) {
            if (str.length == 0) str = "Field value must not be greater than "+max+" in length.";
            break;
        }
        return true;
    } while (false);
    alert(str);
    setTimeout('document.getElementById(\''+id+'\').focus();', 100);
    return false;
}

function validSupCode(id,str) {
    var field = trimField(id);
    if (field.length < 8 || 
        !isInt(field.substring(0,2)) || 
        digits.indexOf(field.charAt(0)) == -1 || 
        digits.indexOf(field.charAt(1)) == -1 || 
        field.charAt(2) != ' ' || 
        digits.indexOf(field.charAt(3)) == -1 || 
        digits.indexOf(field.charAt(4)) == -1 || 
        field.charAt(5) != ' ' || 
        digits.indexOf(field.charAt(6)) == -1 || 
        digits.indexOf(field.charAt(7)) == -1) {
        if (str.length == 0) str = "Field value must comply with the standard Supervisor Code format (## ## ##).";
        alert(str);
        setTimeout('document.getElementById(\''+id+'\').focus();', 100);
        return false;
    }
    return true;
}

function validDept(id) {
    var wage = trimField('wage'+id);
    if (wage.length) {
        if (!validFloat('wage'+id,'','','')) return false;
    }
    var deptID = trimField('department'+id);
    if (deptID >0){
	if (!validInt('order'+id,0,999,'')) return false;
	}
    return true;
}

// id: row number; solo: 0=validate only; 1=solo element; 2=batched (Submit)
function validPref(id,solo) {
    var error = false;
    var type = document.getElementById('prefsType'+id).value;
    var calc = document.getElementById('prefsCalc'+id).value;

    type = (1 * type);
    switch (type) {
    case TYPE_TIME:
        if (!validTime('prefs'+id)) error = true;
        break;
    case TYPE_DATE:
        if (!validDate('prefs'+id,false)) error = true;
        break;
    case TYPE_TEXT:
		var texttype = document.getElementById('prefsRMID'+id).value;
		if (texttype == 181){
			//var iprow = document.getElementById('prefsRow182').value;
			var iprow = "prefs" + id;
			var ipaddress = document.getElementById('prefs'+id).value;
			var iplength = ipaddress.length;
			intcount = 0;
			var strtestarray = "1234567890.:;-* ,";
			var strtestarraylength = strtestarray.length;
			var chartest = 0;
			var intcount2 = 0;
			if (iplength != 0){
				do{
					chartest = 0;
					intcount2 = 0;
					do{
						if(ipaddress.charAt(intcount) == strtestarray.charAt(intcount2)){
							chartest = 1;
						}
						intcount2++;
					}while (intcount2<strtestarraylength);
					if (chartest == 0){
						alert("Field:  Authorized IP Address(es) \n\n Issue: Invalid Character - Valid Characters 0-9 and .:;*- ,");
						setTimeout('document.getElementById(\''+iprow+'\').focus();', 100);
						error = false;
						break;
					}
					intcount++;
				}while(intcount<iplength);
			}			
		}else{
			if (document.getElementById('prefsMIN'+id) == null) break;
			var min = document.getElementById('prefsMIN'+id).value;
			var max = document.getElementById('prefsMAX'+id).value;
			var str = document.getElementById('prefsSTR'+id).value;
			if (!validText('prefs'+id,min,max,str)) error = true;
		}
        break;
    case TYPE_INT:
    case TYPE_INT2:
    case TYPE_HOURS:
        if (document.getElementById('prefsMIN'+id) == null) break;
        var min = document.getElementById('prefsMIN'+id).value;
        var max = document.getElementById('prefsMAX'+id).value;
        var str = document.getElementById('prefsSTR'+id).value;
        if (type == TYPE_INT) {
            if (!validInt('prefs'+id,min,max,str)) error = true;
        } else if (!validFloat('prefs'+id,min,max,str)) error = true;
        break;
    case TYPE_SUPERVISOR:
        var str = document.getElementById('prefsSTR'+id).value;
        if (!validSupCode('prefs'+id,str)) error = true;
        break;
    case TYPE_NONE:
    case TYPE_DROP_DOWN:
    case TYPE_CHECKBOX:
        break;
    default:
        str = "A system error has occured.";
        break;
    }

    if (error) {
        document.getElementById('prefsERR'+id).innerHTML = '<b>&lt;&lt;</b>&nbsp;';
        return false;
    } else document.getElementById('prefsERR'+id).innerHTML = '';

    if (solo > 0 && calc > 0) document.getElementById('blnRecalc').value = calc;

    return true;
}

function pleaseWait() {
    document.getElementById('pleaseWait').style.display = 'block';
}

function validSubmit(msg) {
    if (document.getElementById('password').value == '') {
        alert('The Current Password field must not be blank.');
        document.getElementById('password').focus();
        return false;
    }
    if (document.getElementById('uploadFile').value == '') {
        alert('The Upload File field must not be blank.');
        document.getElementById('password').focus();
        return false;
    }
    document.getElementById('buttonClicked').value='Submit';
    if (confirm('WARNING: '+msg+' ')) {
        pleaseWait();
    } else return false;
    return true;
}

function validateDepts() {
    var rows = document.getElementById('deptsRows').value;
    var departmentArray = [];
    
    for (var i=0; i<rows; i++)
    {
      if (!validDept(i)) return false;
      var deptid = trimField('department'+i);
      if(departmentArray[deptid] == undefined)
      {
		if(deptid != 0)
			departmentArray[deptid] = deptid;
      }
      else
      {
        var id = 'department' + i;
        alert("Duplicate department assignments not allowed.");
        setTimeout('document.getElementById(\''+id+'\').focus();', 100);
        return false;
      }
    }
    return true;
}

function validateDeptOrder(){
	var rows = document.getElementById('deptsRows').value;
	var orderArray = [];
	var temprows = 0;
	var tempval = 0;
	var c=0;
	var x=0;
	do{
		if (document.getElementById('department'+x).value>=0){
			tempval = document.getElementById('order'+x).value;
			orderArray[c] = tempval;
			temprows++;
			c++;
		}
		x++;
		rows--;
	}while(rows>0)
	var temporder = 0;
	for (var t=0; t<temprows-1; t++){
		temporder = orderArray[t];
		inttemp = t + 1;
		do{
			if (temporder == orderArray[inttemp]){
				alert("Field:  Department Order \n\n Issue:  Two departments can not have the same order value");
				return false;
			}
			inttemp++;
		}while(inttemp<temprows);
	}
	
	return true;
}

function validatePrefs() {
    var rows = document.getElementById('prefsRows').value;
    var calc = document.getElementById('blnRecalc').value;
    for (var i=0; i<rows; i++) if (!validPref(i,0)) return false;
    if (calc > 0) {
        if (!confirm(caclMsg)) return false;
        pleaseWait();
    }
    return true;
}

function validateWebPunch(){
	var licenses = parseInt(document.getElementById('intWebPunchLicenses').value);
	if (licenses > 0){
		var users = parseInt(document.getElementById('intWebUsers').value);
		var rows = document.getElementById('prefsRow178').value;
		var temp = document.getElementById('prefs'+rows).checked;
		var id = "prefs" + rows;
	
		//validating licenses
		if ( licenses >0 ){
			if( users >= licenses){
				if (temp == true ){ 
				alert("Field:  Assign to Web Punch \n\n Issue:  No more Web Punch Licenses available");
				setTimeout('document.getElementById(\''+id+'\').focus();', 100);
				return false;
				}
			}
		}
	
	
		if (temp == true){
	
			//validating password
			var passrow = document.getElementById('prefsRow179').value;
			id = "prefs"+passrow;
			var password = document.getElementById('prefs'+passrow).value;
		
			if (password == ""){
				alert("Field:  Web Punch Password \n\n Issue:  Password can not be blank");
				setTimeout('document.getElementById(\''+id+'\').focus();', 100);
				return false;
			}
			intpasslength = password.length;
			if (intpasslength < 4){
				alert("Field:  Web Punch Password \n\n Issue:  Password must be at least 4 characters");
				setTimeout('document.getElementById(\''+id+'\').focus();', 100);
				return false;
			}
			if (intpasslength > 16){
				alert("Field:  Web Punch Password \n\n Issue:  Password can not exceed 16 characters");
				setTimeout('document.getElementById(\''+id+'\').focus();', 100);
				return false;
			}
			intcount = 0;
			do{
				if (password.charAt(intcount) < "0" || (password.charAt(intcount) > "9" && password.charAt(intcount) < "A") || (password.charAt(intcount) > "Z" && password.charAt(intcount) < "a") || password.charAt(intcount) >"z"){
					alert("Field:  Web Punch Password \n\n  Issue:  Invalid Characters - Valid characters 0-9, A-Z and a-z");
					setTimeout('document.getElementById(\''+id+'\').focus();', 100);
					return false;
				}else{
					intcount++;
				}
			}while (intcount<intpasslength);
		
			//validating IP address
			var iprow = document.getElementById('prefsRow182').value;
			id = "prefs" + iprow;
			var ipaddress = document.getElementById('prefs'+iprow).value;
		
			var iplength = ipaddress.length;
			intcount = 0;
			var strtestarray = "1234567890.:;-* ,";
			var strtestarraylength = strtestarray.length;
			var chartest = 0;
			var intcount2 = 0;
			if (iplength != 0){
				do{
					chartest = 0;
					intcount2 = 0;
					do{
						if(ipaddress.charAt(intcount) == strtestarray.charAt(intcount2)){
							chartest = 1;
						}
						intcount2++;
					}while (intcount2<strtestarraylength);
					if (chartest == 0){
						alert("Field:  Authorized IP Address(es) \n\n Issue: Invalid Character - Valid Characters 0-9 and .:;*- ,");
						setTimeout('document.getElementById(\''+id+'\').focus();', 100);
						return false;
					}
					intcount++;
				}while(intcount<iplength);
			}
		
		}

	}
	return true;
}

function validateAccruals(){

	var tempArray = new Array("ha","yh","ym","ra");
	var AccrualNames = new Array("Vacation", "Sick", "Personal");
	var AccrualValNames = new Array("Hours Available", "Yearly Hours", "Yearly Max", "Reset Amount");
	var arraylength = tempArray.length;
	var accrualNbr = AccrualNames.length;
	var id = "";
	var returnvalue = "";

	for(i=0; i<accrualNbr; i++){
		for(c=0; c<arraylength; c++){
			returnvalue =validAccrualFloat("a"+i+tempArray[c],-999.99,999.99,AccrualNames[i],AccrualValNames[c]);
				if (returnvalue == false){
				return false;
			}
		}
	}
	return true;
}

function validateAlerts() {
    // recipient (e-mail) fields
    return true;
}

function validateDepartment() {
    if (!validText('strName',1,MAX_ID_NAME,'')) return false;
    if (!validText('strNote',0,MAX_NOTE,'')) return false;
    if (!validatePrefs()) return false;
    return true;
}

function validateEmployee() {
    if (!validText('nameFirst',0,MAX_NAME,'')) return false;
    if (!validText('nameMiddle',0,1,'')) return false;
    if (!validText('nameLast',0,MAX_NAME,'')) return false;
    if (!validText('nameDisplay',1,MAX_ID_NAME,'')) return false;
    if (!validText('strVisibleID',1,9,'')) return false;
    if (!validText('strAddress',0,MAX_NAME,'')) return false;
    if (!validText('strNote',0,MAX_NOTE,'')) return false;
    if (!validateDepts()) return false;
    if (!validatePrefs()) return false;
    if (!validateWebPunch()) return false;
    if (!validateDeptOrder()) return false;
    if (!validateAccruals()) return false;
    return true;
}

function validateUser(allowNoPassword) {
    if (!validText('strUsername',4,20,'')) return false;
    
    var field = trimField('strChangePassword');
    if(allowNoPassword && field == '') return true;
    if (!validText('strChangePassword',4,20,'')) return false;
    
    return true;
}

function validatePunch() {
    if (!validDate('punchDate',false)) return false;
    if (!validTime('punchTime')) return false;
    if (!validInt('punchLunch','','','')) return false;
    if (!validFloat('intAdjustment','','','')) return false;
    if (!validText('strNote',0,MAX_NOTE,'')) return false;
    return true;
}

function validCustomReport(fmt)
{
    var v = document.getElementById('timeFrame').value;

    if(v == 7) //Custom Date Range
    {
        return validToFromDates('toDate','fromDate',fmt);
    }
    else
    {
        return true;
    }
}

function validToFromDates(toField,fromField,fmt) {

    if(!validDate(toField,fmt) || !validDate(fromField,fmt)) return false;
    
    var fieldTo = document.getElementById(toField).value;
    var fieldFrom = document.getElementById(fromField).value;
    
    var month;
    var day;
    var year;
    
    if(fmt)
    {
        day = fieldTo.substring(0,2) * 1;
        month = fieldTo.substring(3,5) - 1;
    }
    else
    {
        month = fieldTo.substring(0,2) - 1;
        day = fieldTo.substring(3,5) * 1;
    }
    year = (fieldTo.substring(6,8) * 1) + 2000;
    
    var toDate = new Date(year,month,day);
    
    if(fmt)
    {
        day = fieldFrom.substring(0,2) * 1;
        month = fieldFrom.substring(3,5) * 1;
    }
    else
    {
        month = fieldFrom.substring(0,2) - 1;
        day = fieldFrom.substring(3,5) * 1;
    }
    year = (fieldFrom.substring(6,8) * 1) + 2000;
    
    var fromDate = new Date(year,month,day);
    
    if(toDate < fromDate)
    {
        alert("Your \"From Date\" is later then your \"To Date\", please check your dates and try again.");
        return false;
    }

    return true;
}

// use unescape() to decode
function encodeText(text) {
    text = text.replace(/ /g,"%20");
    text = text.replace(/\"/g,"%22");
    text = text.replace(/$/g,"%24");
    text = text.replace(/%/g,"%25");
    text = text.replace(/&/g,"%26");
    text = text.replace(/\'/g,"%27");
    text = text.replace(/\+/g,"%2B");
    text = text.replace(/./g,"%2E");
    text = text.replace(/\//g,"%2F");
    text = text.replace(/:/g,"%3A");
    text = text.replace(/\;/g,"%3B");
    text = text.replace(/=/g,"%3D");
    text = text.replace(/\?/g,"%3F");
    text = text.replace(/@/g,"%40");
    text = text.replace(/\\/g,"%5C");
    return text;
}

function chgPreferenceRes() {
    if (xmlhttp.readyState == 4 && (xmlhttp.status == 200 || xmlhttp.status == 304)) {
        var res = xmlhttp.responseText;

        // parse :intID:varValue:blnVisible;
        while (res.charAt(0)==':') {
            res=res.substring(1); // :intID
            var div0=res.indexOf(':'); // intID:
            var div1=res.indexOf(':',div0+1); // varValue:
            var div2=res.indexOf(';',div1+1); // blnVisible;
            var intID=res.substring(0,div0);
            var varValue=res.substring(div0+1,div1);
            var blnVisible=res.substring(div1+1,div2);
            res=res.substring(div2+1);
            var prefsRow = document.getElementById('prefsRow'+intID).value;
            var prefsType = document.getElementById('prefsType'+prefsRow).value;
            var prefs = document.getElementById('prefs'+prefsRow);
            if (varValue != "null") {
                if (prefsType == TYPE_DROP_DOWN) {
                    prefs.options[prefs.selectedIndex].value = varValue;
                } else {
                    varValue = unescape(varValue);
                    prefs.value = varValue;
                }
            }
            if ((1 * blnVisible) > 0) {
                document.getElementById('prefsDiv'+prefsRow).style.display = 'block';
            } else document.getElementById('prefsDiv'+prefsRow).style.display = 'none';
        }
    }
}

function chgPreferenceReq(id) {
    var calc = document.getElementById('prefsCalc'+id).value;
    if (calc > 0) document.getElementById('blnRecalc').value = calc;
    var prefs = document.getElementById('prefs'+id);
    var prefsRMID = document.getElementById('prefsRMID'+id).value;
    var prefsType = document.getElementById('prefsType'+id).value;
    if (prefsType == TYPE_DROP_DOWN) {
        var prefsVar = prefs.options[prefs.selectedIndex].value;
    } else var prefsVar = encodeText(prefs.value);
    xmlhttp.open('POST', '/js/ajaxprefs.html', true); // pre-onreadystatechange required (IE)
    xmlhttp.onreadystatechange = chgPreferenceRes;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send('intRuleMapsID='+prefsRMID+'&varRuleValue='+prefsVar+'&intControlType='+prefsType);
}

function chgEmployeeRes() {
    if (xmlhttp.readyState == 4 && (xmlhttp.status == 200 || xmlhttp.status == 304)) {
        var res = xmlhttp.responseText;
        if (res.charAt(0)==';') {
            document.getElementById('delPunch0').style.display = 'block';
            document.getElementById('delPunch1').style.display = 'none';
        } else {
            document.getElementById('delPunch0').style.display = 'none';
            document.getElementById('delPunch1').style.display = 'block';
        }
    }
}

function chgEmployeeReq(id) {
    if (!confirm('THIS WILL DELETE ALL OF THIS EMPLOYEE\'S PUNCHES, ARE YOU SURE YOU WANT TO CONTINUE? Click OK to continue. Click Cancel to cancel.')) return false;
    xmlhttp.open('POST', '/js/ajaxemployee.html', true); // pre-onreadystatechange required (IE)
    xmlhttp.onreadystatechange = chgEmployeeRes;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send('intEmployeeID='+id);
}

function chgDepartmentRes() {
    if (xmlhttp.readyState == 4 && (xmlhttp.status == 200 || xmlhttp.status == 304)) {
        var elm = document.getElementById('punchDeptDisp'); // punch the DIV to work around IE6 bug
        var text = xmlhttp.responseText;
        elm.innerHTML = text;
    }
}

function chgDepartmentReq() {
    var selThis = document.getElementById('intEmployeeID');
    var id = selThis.options[selThis.selectedIndex].value;
    xmlhttp.open('POST', '/js/ajaxdepartment.html', true); // pre-onreadystatechange required (IE)
    xmlhttp.onreadystatechange = chgDepartmentRes;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send('intEmployeeID='+id);
}

