
function postData(dataSource, sendData) { 
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
	if (XMLHttpRequestObject) {
		XMLHttpRequestObject.open("POST", dataSource);
		XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		XMLHttpRequestObject.onreadystatechange = function() {
			if ((XMLHttpRequestObject.readyState == 4 )&&(XMLHttpRequestObject.status == 200)) {
				success = true;		
			}			
		}
		XMLHttpRequestObject.send(sendData);
	}
}

function getData(qryFilePath, objTarget){
	var XMLHttpRequestObject;
	
	try{
		// Opera 8.0+, Firefox, Safari
		XMLHttpRequestObject = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			XMLHttpRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("There are problem with your browser!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	XMLHttpRequestObject.onreadystatechange = function(){
		if((XMLHttpRequestObject.readyState == 4)&&(XMLHttpRequestObject.status == 200)){
			var strValue = XMLHttpRequestObject.responseText;
			switch(objTarget.type){
				case 'select-one': 
					objTarget.length = 0;
					var SepCount = 0;
					for (i=0; i<strValue.length; i++) {
						if (strValue.charAt(i) == "|")
							 SepCount++;
					 }
					for (i=1; i<=SepCount; i++) {
						SelEmp = ListGetAt(strValue,i,":");		
						var oOption = document.createElement("OPTION");
						oOption.value=ListGetAt(SelEmp,1,"|");
						oOption.text=ListGetAt(SelEmp,2,"|");
						var OptExists = false;
						for (j=0; j<objTarget.length; j++) {			
							if (objTarget.options[j].value == oOption.value)
							OptExists = true;
						}
						if (!OptExists){
							try {
								objTarget.add(oOption,null); //DOM2 method (firefox)
							}
							catch (e) {
								objTarget.add(oOption); //DOM1 method (IE)
							}
						}
					}
					break;

				case 'text': 
					objTarget.innerHTML = strValue; 
					break;
			}
			success = true;
		}
	}
	XMLHttpRequestObject.open("GET", g_webserver+'/'+g_root+qryFilePath, true);
	XMLHttpRequestObject.send(null); 
}


function toggleModule(moduleName,moduleColour,strHomePage) {
	
	if (document.getElementById('xc_' + moduleName).style.display == 'none') {
		var strStatusChange = 0;
		document.getElementById('xc_' + moduleName).style.display='';
		if ( moduleColour == 'w' ) {
			document.getElementById('ModuleArrow_' + moduleName).src=g_webserver+'/'+g_root+'/images/moduleArrowOpen_White.png';
		} else {
			document.getElementById('ModuleArrow_' + moduleName).src=g_webserver+'/'+g_root+'/images/moduleArrowOpen.png';	
		}
		document.getElementById('ModuleArrow_' + moduleName).title='Close';
	} else {
		var strStatusChange = 1;
		document.getElementById('xc_' + moduleName).style.display='none';	
		if ( moduleColour == 'w' ) {
			document.getElementById('ModuleArrow_' + moduleName).src=g_webserver+'/'+g_root+'/images/moduleArrowClosed_White.png';
		} else {
			document.getElementById('ModuleArrow_' + moduleName).src=g_webserver+'/'+g_root+'/images/moduleArrowClosed.png';	
		}
		document.getElementById('ModuleArrow_' + moduleName).title='Open';
	}	
	
	if (typeof window.ActiveXObject != 'undefined' ) {
		xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else {
		xmlDoc = new XMLHttpRequest();
	}
	xmlDoc.open( "POST", g_webserver+'/'+g_root+'/modules/include/setModuleStatus.cfm?ModuleName='+moduleName+'&HomePage='+strHomePage+'&Status='+strStatusChange, true );
	xmlDoc.send( null );
		
}

function setModuleView(moduleName,moduleColour) {
	
	if (document.getElementById('ModuleArrow_' + moduleName) ) {
		
		var strStatusChange = 0;
		document.getElementById('xc_' + moduleName).style.display='none';	
		if ( moduleColour == 'w' ) {
			document.getElementById('ModuleArrow_' + moduleName).src=g_webserver+'/'+g_root+'/images/moduleArrowClosed_White.png';
		} else {
			document.getElementById('ModuleArrow_' + moduleName).src=g_webserver+'/'+g_root+'/images/moduleArrowClosed.png';	
		}
		document.getElementById('ModuleArrow_' + moduleName).title='Open';

	}
}

// Function: applyCondRules
// Parameters: dataSource - the URL of the CFM to call to dynamically apply the rules for the current workflow step.
//	        sendData - the data to send to the URL for applying the rules.
// 
// Invoked when the user enters data (onchange event) in a field which is the conditional field for a conditional rule.
// Invokes the CFM for applying the conditional rules which determines for each field on the form whether the field is visible / view only / editable.
//
function applyCondRules(dataSource, sendData) {
	var disableField = "";
	var showField = "";
	var formFieldId = "";
	var count = 0;

	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if (XMLHttpRequestObject) {
		XMLHttpRequestObject.onreadystatechange = function() {
			if ((XMLHttpRequestObject.readyState == 4 )&&(XMLHttpRequestObject.status == 200)) {
				var msg = "";
				
				if (XMLHttpRequestObject.responseXML != null) {
					msg=XMLHttpRequestObject.responseXML.documentElement;
					count = msg.getElementsByTagName("Data").length;
				}

				// For each of the fields, retrieve the ShowField and DisableField elements from the response XML.
				for (i=0; i<count; i++) {
					showField=msg.getElementsByTagName("ShowField")[i].childNodes[0].nodeValue;
					formFieldId = msg.getElementsByTagName("FormFieldId")[i].childNodes[0].nodeValue;
					hasChildNodes = msg.getElementsByTagName("DisableField")[i].hasChildNodes();
					if (hasChildNodes ) 
						disableField = msg.getElementsByTagName("DisableField")[i].childNodes[0].nodeValue;
					else
						disableField="";
					
					var elem = document.getElementById("id_"+formFieldId);
					var elems = null;
					if (elem == null)
						elem = document.getElementById("list_id_"+formFieldId);
					if (elem == null)
						elem = document.getElementById("sel_id_"+formFieldId);
					if ((elem == null) && (eval("document.forms[0].rad_field_"+formFieldId) != null) )
						elems = eval("document.forms[0].rad_field_"+formFieldId);

					var imgElem = document.getElementById("imgField_"+formFieldId);
					var buttonElems = document.getElementsByName("button_"+formFieldId);

					// If DisableField is true, then set the field to view only.
					if (disableField == "readOnly") {
						DisableField(elem, buttonElems, imgElem, elems);
					}
					else {	
						EnableField(elem, buttonElems, imgElem, elems);
					}	

					// Determine if the field is hidden or not and apply rule.	
					var elemPrompt =  document.getElementById("prompt_"+formFieldId);
					var elemInput = document.getElementById("input_"+formFieldId);
					var elemDesc = document.getElementById("desc_"+formFieldId);
					if (showField == '1') {
						ShowField(elemPrompt, elemInput, imgElem, buttonElems, elemDesc, disableField);
					}
					else {
						HideField(elemPrompt, elemInput, imgElem, buttonElems, elemDesc);
					}
				}
			}			
		}
		XMLHttpRequestObject.open("GET", dataSource+sendData, true);
		XMLHttpRequestObject.setRequestHeader('Content-Type','text/xml');
		XMLHttpRequestObject.send(null);
	}
}


// Function: DisableFields
// Parameters: elem - the field to disable
//	        buttonElems - any buttons associated with the field
//	        imgElem - any image associated with the field
//	        elems - the field to disable (for radio buttons / checkboxes)
// 
// Disables the field.
//
function DisableField(elem, buttonElems, imgElem, elems)
{
	if (elem != null) {
		elem.readOnly=true;
		elem.disabled = true;
	}
	if (buttonElems != null) {
		for (j=0; j<buttonElems.length; j++) {
			buttonElems[j].style.visibility = 'hidden';
			buttonElems[j].style.display = 'none';
		}
	}
	if (imgElem != null) {
		imgElem.style.visibility = 'hidden';
		imgElem.style.display = 'none';
	}
	if (elems != null) {
		for (j=0; j<elems.length; j++) {
			elems[j].readOnly = true;
			elems[j].disabled = true;
		}
	}
}

// Function: EnableFields
// Parameters: elem - the field to disable
//	        buttonElems - any buttons associated with the field
//	        imgElem - any image associated with the field
//	        elems - the field to disable (for radio buttons / checkboxes)
// 
// Enables the field.
//
function EnableField(elem, buttonElems, imgElem, elems)
{
	if (elem != null) {
		elem.readOnly=false;
		elem.disabled = false;
	}
	if (buttonElems != null) {
		for (j=0; j<buttonElems.length; j++) {
			buttonElems[j].style.visibility = 'visible';
			buttonElems[j].style.display = '';
		}
	}
	if (imgElem != null) {
		imgElem.style.visibility = 'visible';
		imgElem.style.display = '';
	}
	if (elems != null) {
		for (j=0; j<elems.length; j++) {
			elems[j].readOnly = false;
			elems[j].disabled = false;
		}
	}
}

// Function: HideField
// Parameters: elemPrompt - the prompt for the field
//	        elemInput - the field
//	        imgElem - any image associated with the field
//	        buttonElems - any buttons associated with the field
// 			elemDesc - the description
//
// Hides the field
//
function HideField(elemPrompt, elemInput, imgElem, buttonElems, elemDesc)
{
	if (elemPrompt != null)
		elemPrompt.style.display = 'none';
	if (elemInput != null)
		elemInput.style.display = 'none';
	if (imgElem != null)
		imgElem.style.display = 'none';
	if (buttonElems != null) {
		for (j=0; j<buttonElems.length; j++) {
			buttonElems[j].style.visibility = 'hidden';
			buttonElems[j].style.display = 'none';
		}
	}
	if (elemDesc != null)
		elemDesc.style.display = 'none';
}

// Function: ShowField
// Parameters: elemPrompt - the prompt for the field
//	        elemInput - the field
//	        imgElem - any image associated with the field
//	        buttonElems - any buttons associated with the field
// 			elemDesc - the description
//	        disableField - indicates if the field is read only.
// 
// Shows the field
//
function ShowField(elemPrompt, elemInput, imgElem, buttonElems, elemDesc, disableField)
{
	if (elemPrompt != null) {
		elemPrompt.style.visibility = 'visible';
		elemPrompt.style.display = '';
	}
	if (elemInput != null) {
		elemInput.style.display = '';
		elemInput.style.visibility= 'visible';
	}
	if (imgElem != null) {
		imgElem.style.visibility = 'visible';
		imgElem.style.display = '';
	}
	if ((disableField != "readOnly") && (buttonElems != null)) {
		for (j=0; j<buttonElems.length; j++) {
			buttonElems[j].style.visibility = 'visible';
			buttonElems[j].style.display = '';
		} 
	}
	if (elemDesc != null) {
		elemDesc.style.visibility = 'visible';
		elemDesc.style.display = '';		
	}	
}