
	//  Package Name: dts.js
	// 	Description:  Contains javascript global ezmpr variables, functions, and procedures used by the system
	
	function FilterText(txt, charset, evt){
		
		// Function Name:  FilterText()
		// Description:  function used to filter text entry based on a given character set
		
		var xkeycode = evt.keyCode;
		var fintxt = "";

		if ((xkeycode < 33 || xkeycode > 40) &&				// navigation keys (up, down, left, page down, etc..)
			xkeycode != 8 &&				// delete key
			xkeycode != 9 &&				// tab key
			xkeycode != 16 
			){				// exempt navigation keys from validation
		
			for (ctr=0; ctr < txt.value.length; ctr++) {
				cur = txt.value.charAt(ctr);
				if (charset.indexOf(cur,0) != -1)
					fintxt += cur;
				else
					alert('The character ' + cur + ' is not allowed.');
			}
			
			if (txt.value != fintxt) {
				txt.value = fintxt;
				return txt.value;
			}
			else
				return;
		}
		else
			return;
	} 

	function LimitText(txtfield, txtlimit) {
		
		// Function Name:  LimitText()
		// Description:  function used to limit input length
		
		if (txtfield.value.length > txtlimit) {
			txtfield.value = txtfield.value.substring(0, txtlimit);
		} 
		
		return;
	}

	function create_dialog(url, fetcher, object_id, scrolltop_flag, evt) {

		// Function Name:  create_dialog()
		// Description:  function used create a customized dialog window
		
		//create blanket
		create_blanket();
		
		var isIE = document.all;	// check if IE (IE does not support pageX and pageY)
		var yoffset = 0;
		var defdialogpos_y = 200;
		var dialogpos_y; 
		var dialogdiv = document.createElement('div');
		
		dialogdiv.setAttribute('id','div_dialog');
		dialogdiv.className = "dialog_boundary";

		if (fetcher) {	// for AJAX updated pages
			
			dialogdiv.innerHTML = '<iframe id=\"diagframe\" name=\"diagframe\" src=\'' + url + '\' onLoad=\"getcontent_update(\'' + fetcher + '\',\'' + object_id + '\', ' + scrolltop_flag +');\" width=\"452\" height=\"100\" scrolling=\"no\" frameborder=\"0\"></iframe><br>' + 
								  '<table border=\"0\" width=\"450\">' + 
								  '<tr><td width=\"434\" height=\"20\" align=\"center\"><span id=\"closedialoglink\" class=\"content_text_bold\">Please Wait...</span></td></tr>' + 
								  '</table>';		
		}
		else {  // for normal pages
			  
			dialogdiv.innerHTML = '<iframe id=\"diagframe\" name=\"diagframe\" src=\'' + url + '\' onLoad=\"change_closedialoglink();\"width=\"452\" height=\"100\" scrolling=\"no\" frameborder=\"0\"></iframe><br>' + 
								  '<table border=\"0\" width=\"450\">' + 
								  '<tr><td width=\"434\" height=\"20\" align=\"center\"><span id=\"closedialoglink\" class=\"content_text_bold\">Please Wait...</span></td></tr>' + 
								  '</table>';		
		}
		
		if (fetcher && scrolltop_flag) {
		
			dialogpos_y = defdialogpos_y;
		}
		else {
		
			dialogpos_y = (document.documentElement.scrollTop + yoffset);
		}
		
		
		if (dialogpos_y > defdialogpos_y) {
			
			dialogdiv.style.top = dialogpos_y + 'px';
		}
		else {
			
			dialogdiv.style.top = defdialogpos_y + 'px';
		}
		
		document.body.appendChild(dialogdiv);
		
		if (fetcher && scrolltop_flag) {
		
			var xdiv = document.getElementById(object_id);
			
			// scroll back to top
			xdiv.scrollTop = 0;
			var xscroll = scroll(0,0);
		}
	
		return;
	}

	function show_tooltip (tooltip_id, tooltip_header, tooltip_text, evt) {
		
		// Function Name:  show_tooltip()
		// Description:  function used to show tooltips (help captions)
		
		var isIE = document.all;	// check if IE (IE does not support pageX and pageY)
		var mytooltip = document.getElementById(tooltip_id);
		var xoffset = 20;
		var yoffset = 0;
		
		tooltip_text = '<span class=\"tooltip_header_bold\">' + tooltip_header + '</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div class=\"tooltip_close_button\" onClick=\"hide_tooltip(\'' + tooltip_id + '\');\"></div><br>' + '<div class=\"tooltip_text_boundary\">' + encodebr(tooltip_text) + '</div>';
		
		if (!mytooltip) {
			
			var newtooltip = document.createElement('div');
			
			newtooltip.setAttribute('id', tooltip_id);
			newtooltip.className = "tooltip_container_boundary";
			
			if (!isIE) {		// non IE browsers
			
				newtooltip.style.left = (evt.pageX + xoffset) + 'px';
				newtooltip.style.top = (evt.pageY + yoffset) + 'px';
			}
			else {		// IE
			
				newtooltip.style.left = (evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft + xoffset) + 'px';
				newtooltip.style.top = (evt.clientY + document.body.scrollTop + document.documentElement.scrollTop + yoffset) + 'px';
			}

			newtooltip.innerHTML = tooltip_text;		
			
			document.body.appendChild(newtooltip);
		}
		
		return;
	}
	
	function hide_tooltip (tooltip_id) {

		// Function Name:  hide_tooltip()
		// Description:  function used to hide (remove) tooltips (help captions)

		var mybody = document.getElementsByTagName("body").item(0);
		var mytooltip = document.getElementById(tooltip_id);
		
		if (mytooltip) {
			mybody.removeChild(mytooltip);
		}
		
		return;
	}

	function encodebr (textstr) {

		// Function Name:  encodebr()
		// Description:  function used to replace carriage returns with the <br> tag

		newstr = escape(textstr);
		
		for (i=0; i < newstr.length; i++) {
		
			if(newstr.indexOf("%0D%0A") > -1){
			
				newstr = newstr.replace("%0D%0A",'<br>');
			}
			else if (newstr.indexOf("%0A") > -1){
		
				newstr = newstr.replace("%0A",'<br>');
			}
			else if (newstr.indexOf("%0D") > -1){
				
				newstr = newstr.replace("%0D",'<br>');
			}
		}

		newstr = unescape(newstr);

		return newstr;
	}

	function create_blanket() {

		// Function Name:  create_blanket()
		// Description:  function used create a blanket(div) to cover and prevent the user from accessing elements

		var blanketdiv = document.createElement('div');
		var heightoffset = 90;
		
		blanketdiv.setAttribute('id','div_blanket');
		blanketdiv.className = "blanket_boundary";
	
		blanketdiv.style.height = ((document.height || document.body.offsetHeight) + heightoffset) + 'px';
		document.body.appendChild(blanketdiv);
		
		return;
	}
	
	function display_progress(scrolltop_flag) {
		
		var mydiv = document.getElementById('div_progress');
		var defposx = 350;
		var posx_offset = 150;
		var posx;
		
		if (!mydiv) {
			
			var progressdiv = document.createElement('div');
			
			progressdiv.setAttribute('id','div_progress');
			progressdiv.className = "progress_image_boundary";
			
			if (scrolltop_flag) {
				
				posx = defposx;
			}
			else {
				
				posx = (document.documentElement.scrollTop + posx_offset);
			}
			
			//posx = Math.round(((document.height || document.body.offsetHeight) + posx_offset) / 2);
			
			if (posx < defposx) {
				
				progressdiv.style.top = defposx + 'px';
			}
			else {
				
				progressdiv.style.top = posx + 'px';
			}
			
			progressdiv.innerHTML = '<span class=\"progress_text_bold\">Loading page...</span>';		
			
			document.body.appendChild(progressdiv);
		}
		
		return;
	}
	
	function remove_progress() {

		// Function Name:  remove_progress()
		// Description:  function used to close the customized progress indicator

		var mybody = document.getElementsByTagName("body").item(0);
		var mydiv = document.getElementById('div_progress');
		var blanketdiv = document.getElementById('div_blanket');
		
		// regenerate blanket
		if (blanketdiv) {
			mybody.removeChild(blanketdiv);
			create_blanket();
		}
		
		if (mydiv) {
			mybody.removeChild(mydiv);
		}
		
		change_closedialoglink();
		
		return;
	}

	function change_closedialoglink() {
		
		var xlink = document.getElementById("closedialoglink");
		
		if (xlink) {
			
			xlink.innerHTML = "<a class=\"link_text_bold\" onclick=\"remove_dialog();\">Close</a>";
		}
		
		return;
	}
	
	function remove_dialog() {

		// Function Name:  remove_dialog()
		// Description:  function used to close the customized dialog box

		var mybody = document.getElementsByTagName("body").item(0);
		
		if (document.getElementById('div_blanket')) {
		
			mybody.removeChild(document.getElementById('div_blanket'));
		}
  		
		if (document.getElementById('div_dialog')) {
			
			mybody.removeChild(document.getElementById('div_dialog'));
		}
		
		return;
	}
	
	function switch_check_value(object_id) {
		
		var xcheckbox = document.getElementById(object_id);
		
		if (xcheckbox.checked == true) {
			
			xcheckbox.value = 1;
		}
		else {
			
			xcheckbox.value = 0;
		}
		
		return;
	}
	
	function cleanup_check() {
		
		if (document.forms[0].elements['checkall'].checked == true) {
			
			document.forms[0].elements['pdf'].checked = true;
			document.forms[0].elements['pdf'].value = 1;
			document.forms[0].elements['html'].checked = true;
			document.forms[0].elements['html'].value = 1;
			document.forms[0].elements['gif'].checked = true;
			document.forms[0].elements['gif'].value = 1;
		}
		else {
			
			document.forms[0].elements['pdf'].checked = false;
			document.forms[0].elements['pdf'].value = 0;
			document.forms[0].elements['html'].checked = false;
			document.forms[0].elements['html'].value = 0;
			document.forms[0].elements['gif'].checked = false;
			document.forms[0].elements['gif'].value = 0;
		}
		
		return;
	}

	function show_version(sys_name, sys_copyright, sys_author) {
		
		var ver_txt = sys_name + '\n' +
					  sys_copyright + '\n\n\n\n' +
					  "By: " + '\n\n' +
					  sys_author;
		
		alert (ver_txt);
		
		return;
		
	}

	function populate_doctype (cat_code, doctype_array, doctype_object_id, docclass_object_id) {
		
		var ctr;
		var i;
		
		// populate doctype
		doctype_select = document.getElementById(doctype_object_id);	
		
		doctype_select.options.length = 0;
		
		ctr = 0;
		i = 1;
		
		doctype_select.options[0] = new Option('-- None Selected --','');
		
		while (ctr <= doctype_array.length - 1) {
			
			if (doctype_array[ctr][2] == cat_code) {
				
				doctype_select.options[i] = new Option(doctype_array[ctr][1],doctype_array[ctr][0]);
				
				i = i + 1;
			}
			
			ctr = ctr + 1;
		}
		
		// reset doc class
		docclass_select = document.getElementById(docclass_object_id);	
		
		if (docclass_select) {
			
			docclass_select.options.length = 0;
			docclass_select.options[0] = new Option('-- None Selected --','');
		}
		
		return;
	}

	function populate_docclass (doctype_id, docclass_array, docclass_object_id, doccat_object_id) {
		
		var ctr;
		var i;
		var cat_code;
		
		cat_code = document.getElementById(doccat_object_id).value;
		
		docclass_select = document.getElementById(docclass_object_id);	
		
		docclass_select.options.length = 0;
		
		ctr = 0;
		i = 1;
		
		docclass_select.options[0] = new Option('-- None Selected --','');
		
		while (ctr <= docclass_array.length - 1) {
			
			if (docclass_array[ctr][2] == doctype_id && docclass_array[ctr][3] == cat_code) {
				
				docclass_select.options[i] = new Option(docclass_array[ctr][1],docclass_array[ctr][0]);
				
				i = i + 1;
			}
			
			ctr = ctr + 1;
		}
		
		return;
	}

	function reset_transmission_objects (zone_object_id, ofc_object_id, dept_object_id) {

		zone_select = document.getElementById(zone_object_id);	
		ofc_select = document.getElementById(ofc_object_id);	
		dept_select = document.getElementById(dept_object_id);	
		
		// reset zone
		if (zone_select) {
		
			zone_select.options.length = 0;
			zone_select.options[0] = new Option('-- None Selected --','');
		}
		
		// reset office
		if (ofc_select) {
		
			ofc_select.options.length = 0;
			ofc_select.options[0] = new Option('-- None Selected --','');
		}

		// reset department
		if (dept_select) {
		
			dept_select.options.length = 0;
			dept_select.options[0] = new Option('-- None Selected --','');
		}

		return;
	}


	function populate_zone (cat_code, zone_array, zone_object_id) {
		
		var ctr;
		var i;
		
		if (cat_code == "I") {
		
			zone_select = document.getElementById(zone_object_id);
		
			zone_select.options.length = 0;
			
			ctr = 0;
			i = 1;
			
			zone_select.options[0] = new Option('-- None Selected --','');
			
			while (ctr <= zone_array.length - 1) {
				
				zone_select.options[i] = new Option(zone_array[ctr][1],zone_array[ctr][0]);
					
				i = i + 1;
				ctr = ctr + 1;
			}
		}
		
		return;
	}

	function populate_ofc (zone_id, ofc_array, ofc_object_id, dept_object_id, withallflag) {
		
		var ctr;
		var i;
		
		ofc_select = document.getElementById(ofc_object_id);	
		
		ofc_select.options.length = 0;
		
		ctr = 0;
		i = 1;
		
		ofc_select.options[0] = new Option('-- None Selected --','');
		
		if (withallflag && zone_id) {
		
			ofc_select.options[1] = new Option('All Offices and Departments','ALL');
			i = 2;
		}
		
		while (ctr <= ofc_array.length - 1) {
			
			if (ofc_array[ctr][2] == zone_id) {
				
				ofc_select.options[i] = new Option(ofc_array[ctr][1],ofc_array[ctr][0]);
				
				i = i + 1;
			}
			
			ctr = ctr + 1;
		}
		
		// reset dept
		dept_select = document.getElementById(dept_object_id);	
		
		if (dept_select) {
			
			dept_select.options.length = 0;
			dept_select.options[0] = new Option('-- None Selected --','');
		}
		
		return;
	}

	function populate_dept (ofc_id, dept_array, dept_object_id, zone_object_id, withallflag) {
		
		var ctr;
		var i;
		var zone_id;
		
		zone_id = document.getElementById(zone_object_id).value;
		
		dept_select = document.getElementById(dept_object_id);	
		
		dept_select.options.length = 0;
		
		ctr = 0;
		i = 1;
		
		dept_select.options[0] = new Option('-- None Selected --','');
		
		if ((withallflag) && (ofc_id != 'ALL')) {
		
			dept_select.options[1] = new Option('All Departments','ALL');
			i = 2;
		}

		while (ctr <= dept_array.length - 1) {
			
			if (dept_array[ctr][2] == ofc_id && dept_array[ctr][3] == zone_id) {
				
				dept_select.options[i] = new Option(dept_array[ctr][1],dept_array[ctr][0]);
				
				i = i + 1;
			}
			
			ctr = ctr + 1;
		}
		
		return;
	}

	function formatNum(myNum, numOfDec) { 
	
		var decimal = 1
		
		for(i=1; i<=numOfDec;i++) 
			decimal = decimal *10; 
		var myFormattedNum = (Math.round(myNum * decimal)/decimal).toFixed(numOfDec);
		
		if (myFormattedNum == "NaN")
      		return 0;
		else
	  		return(myFormattedNum); 
	  
   	} 
	
	function chrnum(char) {
	
		var num;
	
		num = (char * 1);
		
		if (num)
			return num;
		else
			return 0;
	}
	
	//**********************BEGIN****************************//
	//******************A***J***A***X************************//
	//**********************BEGIN****************************//
	
	var xmlHttp;
	var xobject_id;

	function GetXmlHttpObject() {
		
		var objxmlHttp=null;
		
		try {
			// Firefox, Opera 8.0+, Safari
			objxmlHttp=new XMLHttpRequest();
		}
		catch (e) {
			// Internet Explorer
			try {
				objxmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e) {
				objxmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		return objxmlHttp;
	}	

	function stateChanged() { 
		
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") { 
			document.getElementById(xobject_id).innerHTML = xmlHttp.responseText;
			remove_progress();
		}
	}

	function getcontent_update(fetcher, object_id, scrolltop_flag) {
		
		xobject_id = null;
		
		xobject_id = object_id;
		
		// display progress
		display_progress(scrolltop_flag);
		
		xmlHttp = GetXmlHttpObject();
		
		if (xmlHttp == null) {
		  alert ("Your browser does not support AJAX!\nPlease refresh this page to reflect the changes made.");
		  return;
		} 
		// add timestamp to url.  this prevents ie from returning cached pages
		var url;
		var xdate = new Date();
		var xtime = xdate.getTime();
		var argflag = fetcher.indexOf('?');
		
		if (argflag < 0 ) {
			url = fetcher + "?xtimestamp=" + xtime;
		}
		else {
			url = fetcher + "&xtimestamp=" + xtime;
		}
		
		xmlHttp.onreadystatechange = stateChanged;
		
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
		
		return 1;
	}

	function postcontent_update(fetcher, object_id, parameters, scrolltop_flag) {
		
		xobject_id = null;
		
		xobject_id = object_id;
		
		// display progress
		display_progress(scrolltop_flag);
		
		xmlHttp = GetXmlHttpObject();
		
		if (xmlHttp == null) {
		  alert ("Your browser does not support AJAX!\nUnable to apply changes.");
		  return;
		} 
		
		var url = fetcher;

		xmlHttp.onreadystatechange = stateChanged;
		
		xmlHttp.open("POST", url, true);
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", parameters.length);
		xmlHttp.setRequestHeader("Connection", "close");
		xmlHttp.send(parameters);
		
		return 1;
	}

	//***********************END*****************************//
	//******************A***J***A***X************************//
	//***********************END*****************************//
	
	function getupload_params (fetcher, object_id) {
		
		var xparams = window.frames[0].document.forms['frmparams'].uploadparams.value;

		var newfetcher = fetcher + "&" + xparams;
		
		display_content(newfetcher, object_id, 0);
		
		return;
	
	}
	
	function postupload_request (fetcher, form_id, object_id) {
		
		var uploaddiv = document.createElement('div');
		
		uploaddiv.setAttribute('id','uploaddiv');
		uploaddiv.className = "uploaddiv_boundary";

		uploaddiv.innerHTML = '<iframe id=\"uploadframe\" name=\"uploadframe\" src=\'\' onLoad=\"getupload_params(\'' + fetcher + '\',\'' + object_id + '\');\" class=\"uploadframe_boundary\"></iframe>';				
								  
		document.getElementById(object_id).appendChild(uploaddiv);

		document.forms[form_id].submit(); 
		
		return;
	}

	function getparameters (form_id) {
		
		var xparameters = "";
		var xform = document.forms[form_id];
		var elementcount = xform.elements.length;
		var ctr;
		
	    for(ctr = 0; ctr < elementcount; ctr++) {

			if (ctr < elementcount - 1) {
				xparameters = xparameters + xform.elements[ctr].id + "=" + encodeURIComponent(xform.elements[ctr].value) + "&";
			}
			else {
				xparameters = xparameters + xform.elements[ctr].id + "=" + encodeURIComponent(xform.elements[ctr].value);
			}
		}
		
		return xparameters;
	}

	function display_content (fetcher, object_id, scrolltop_flag) {
		
		var xcontent;
		var xdiv = document.getElementById(object_id);
		
		xcontent = getcontent_update(fetcher, object_id, scrolltop_flag);
		
		// scroll back to top
		if (scrolltop_flag) {
			xdiv.scrollTop = 0;
			var xscroll = scroll(0,0);
		}
		
		return;
			
	}
	
	function postcontent_request (fetcher, object_id, form_id, scrolltop_flag) {

		var xpostparams = getparameters(form_id);
		var xdiv = document.getElementById(object_id);

		var xpostrequest = postcontent_update(fetcher, object_id, xpostparams, scrolltop_flag);
		
		// scroll back to top
		if (scrolltop_flag) {
			xdiv.scrollTop = 0;
			var xscroll = scroll(0,0);
		}
		
		return;
	}

	function actionframe_execute (actionpage, fetcher, object_id, scrolltop_flag, evt) { 

		var xwindow;
		
		xwindow = create_dialog(actionpage, fetcher, object_id, scrolltop_flag, evt);

		return;
	}
	
	function show_repsample_image (imageurl, windowid) {
		
		var xwindow;
		
		// open new window for report sample
		xwindow = window.open(imageurl, windowid, 'width=800,height=600,resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no');
		
		return;
	}