var tc = false;
try {
    tc = true;
} catch(f) { }


var xmlHttpError = 'XML HTTP Request: OK';  // for trouble shooting

function getRequestObject() {
    var objRequest;
    if (window.ActiveXObject) {
        if (tc) {
            try {
                objRequest = new ActiveXObject('Msxml2.XMLHTTP');  // IE 6+
            }
            catch(e) {
                try {
                    objRequest = new ActiveXObject('Microsoft.XMLHTTP');  // IE 5.5
                }
                catch(f) { }
            }
        } else {
            objRequest = new ActiveXObject('Microsoft.XMLHTTP');  // ? IE 5.0 ?
        }
    } else if (window.XMLHttpRequest) {
        objRequest = new XMLHttpRequest();  // All other browsers, inc. IE 7 and DOM 3
    }
    return objRequest;
}

function includeFile(pUrl,pElementId,pImageSrc) {
    if (arguments.length==3) {  // if an image source is sent
        if (pImageSrc) {
						// load the image while waiting
            document.getElementById(pElementId).innerHTML='<img src="'+pImageSrc+'">';  
        }
    }
    if (arguments.length>=3) {  // if a targetElement ID is sent
        if (pImageSrc) {
						// load the image while waiting
            document.getElementById(pElementId).innerHTML='<img src="'+pImageSrc+'">';  
        }
    }

    var objRequest = getRequestObject();  // create a new request object

    if (typeof(objRequest)=='object') {  // if we have an object, and
        if (objRequest.readyState>=0) {  // if the object supports the correct properties...proceed
						// specifiy the function to handle the results
						 // the correct request object is passed for us.
            objRequest.onreadystatechange = 
								function() { 
									handleHttpResponse(objRequest, 
									pElementId); 
								};            
						objRequest.open('GET', pUrl, true);
            objRequest.send(null);
        } else {
            xmlHttpError = 'XML HTTP Request Object Unavailable';
            return false;
        }
    } else {
        xmlHttpError = 'XML HTTP Request Object Not Supported';
        return false;
    }
}

function doAJAX(pUrl, pElementId, pImageSrc, callback) {
    if (arguments.length==3) {  // if an image source is sent
        if (pImageSrc) {
						// load the image while waiting
            document.getElementById(pElementId).innerHTML='<img src="'+pImageSrc+'">';  
        }
    }
    if (arguments.length>=3) {  // if a targetElement ID is sent
        if (pImageSrc) {
						// load the image while waiting
            document.getElementById(pElementId).innerHTML='<img src="'+pImageSrc+'">';  
        }
    }

    var objRequest = getRequestObject();  // create a new request object

    if (typeof(objRequest)=='object') {  // if we have an object, and
        if (objRequest.readyState>=0) {  // if the object supports the correct properties...proceed
						// specifiy the function to handle the results
						 // the correct request object is passed for us.
            objRequest.onreadystatechange = 
								function() { 
									handleHttpResponse(objRequest, 
											pElementId, callback); 
								};            
						objRequest.open('POST', pUrl, true);
            objRequest.send(null);
        } else {
            xmlHttpError = 'XML HTTP Request Object Unavailable';
            return false;
        }
    } else {
        xmlHttpError = 'XML HTTP Request Object Not Supported';
        return false;
    }
}

function handleHttpResponse(pObjRequest, pElementId, callback) {
    if (pObjRequest.readyState==4) {
        if (pObjRequest.status==200) {
						// load the results into the element
						var resp = callbackFunction(callback, pObjRequest.responseText);
            //document.getElementById(pElementId).innerHTML = resp;  
            pObjRequest=null;  // dispose of the now un-needed object.
        }
    }
}


function getUser(obj, pUrl, pElementId) {
	var tgt = pUrl + '?userID=' + obj.value;
	doAJAX(tgt, pElementId, null, 'postGetUser');
}

function postGetUser(txt) {
	// We will have formulated the string as pairs by element name and value.  It will 
	// appear as   tag1:valTag1?tag2:ValTag2  etc.  so
	var pairs = txt.split('?');
	var numPairs = pairs.length;
	// Now process each pair
	for (i=0; i<numPairs; i++) {
		keyval = pairs[i].split(':');
		key = keyval[0];
		if (key == 'clientID') key = 'edit_client_list';
		if (key == 'adminLevel') key = 'edit_level_list';
		value = keyval[1];
		if (key != 'ID') {
			document.getElementById(key).value = value;
		}
	}
	if (document.getElementById('edit_user_list').value == 0) {
		document.getElementById('edit_level_list').value = 'ENTRY';
		document.getElementById('username').value = '';
	}
}

function callbackFunction(tgt, txt) {
	switch (tgt) {
		case 'postGetClient':
			postGetClient(txt);  break;
		case 'postGetReview':
			postGetReview(txt);  break;
		case 'postGetReviewComments':
			postGetReviewComments(txt);  break;
		case 'postGetOpenReview':
			postGetOpenReview(txt);  break;
		case 'postGetUser':
			postGetUser(txt);  break;
	}
}

function getClient(obj, pUrl, pElementId) {
	if (obj.value == 0) {
		document.getElementById('company').value = '';
		document.getElementById('address1').value = '';
		document.getElementById('address2').value = '';
		document.getElementById('city').value = '';
		document.getElementById('state').value = '';
		document.getElementById('zip').value = '';
		document.getElementById('phone').value = '';
		document.getElementById('fax').value = '';
		document.getElementById('contact').value = '';
		document.getElementById('email').value = '';
	} else {
		var tgt = pUrl + '?clientID=' + obj.value;
		doAJAX(tgt, pElementId, null, 'postGetClient');
	}
}

function getOpenReview(obj, pUrl, pElementId) {
	if (obj == 0) {
		document.getElementById('orig_interpreter').value = '';
		document.getElementById('peer_reviewer').value = '';
		document.getElementById('review_result').value = '';
		document.getElementById('mr_number').value = '';
		document.getElementById('modality').value = '';
		document.getElementById('history').value = '';
	} else {
		var tgt = pUrl + '?reviewID=' + obj;
		doAJAX(tgt, pElementId, null, 'postGetOpenReview');
	}
}

function getReview(obj, pUrl, pElementId) {
	var tgt = pUrl + '?reviewID=' + obj;
	doAJAX(tgt, pElementId, null, 'postGetReview');
}

function getReviewComments(id, pUrl, pElementId) {
	var tgt = pUrl + '?reviewID=' + id;
	doAJAX(tgt, pElementId, null, 'postGetReviewComments');
}

function postGetOpenReview(txt) {
	// We will have formulated the string as pairs by element name and value.  It will 
	// appear as   tag1:valTag1?tag2:ValTag2  etc.  so
	var pairs = txt.split('?');
	var numPairs = pairs.length;
	// Now process each pair
	for (i=0; i<numPairs; i++) {
		keyval = pairs[i].split('#');
		key = keyval[0];
		value = keyval[1];
		if (key == 'history') {
			document.getElementById(key).innerHTML = value;
		} else { 
			document.getElementById(key).value = value;
		}
	}
}

function postGetClient(txt) {
	// We will have formulated the string as pairs by element name and value.  It will 
	// appear as   tag1:valTag1?tag2:ValTag2  etc.  so
	var pairs = txt.split('?');
	var numPairs = pairs.length;
	// Now process each pair
	for (i=0; i<numPairs; i++) {
		keyval = pairs[i].split(':');
		key = keyval[0];
		value = keyval[1];
		if (key != 'ID') {
			document.getElementById(key).value = value;
		}
	}
}

function postGetReview(txt) {
	// We will have formulated the string as pairs by element name and value.  It will 
	// appear as   tag1:valTag1?tag2:ValTag2  etc.  so
	var pairs = txt.split('?');
	var numPairs = pairs.length;
	// Now process each pair
	for (i=0; i<numPairs; i++) {
		keyval = pairs[i].split(':');
		key = keyval[0];
		value = keyval[1];
		//if (key == 'clientID') key = 'data_entry_client';
		if (((key == 'orig_interpreterID') || (key == 'peer_reviewerID')) && (value == 0)) {
			value = document.getElementById('physician_zero').value;
		}
		if ((key == 'modalityID') && (value == 0)) {
			value = document.getElementById('modality_zero').value;
	  }
		if (key == 'review_result') {
			radio = new Array();
			for (j=1; j<5; j++) {
				if (j == value) {
					document.getElementById('review_result_' + j).checked = true;
				} else { 
					document.getElementById('review_result_' + j).checked = false;
				}
			}
			if (value < 3) {
					//document.getElementById('mr_number_div').style.visibility = 'hidden';
			} else {
					document.getElementById('mr_number_div').style.visibility = 'visible';
			}
		} else if (key != 'clientID') {
			document.getElementById(key).value = value;
		}
	}
}

function checkMR() {    if (document.getElementById('date_entered').value == ''){ 	 alert("If no date is entered, today's date will be used"); 	 var currentTime = new Date();	 var month = currentTime.getMonth() + 1;	 var day = currentTime.getDate();	 var year = currentTime.getFullYear();	 document.getElementById('date_entered').value = year + '-' + month + '-' + day;	 return false;	}
	if (document.getElementById('review_result_1').checked == true) level = 1;
	else if (document.getElementById('review_result_2').checked == true) level = 2;
	else if (document.getElementById('review_result_3').checked == true) level = 3;
	else level = 4;
	
	if (((level == 3) || (level == 4)) && (trim(document.getElementById('mr_number').value) == '') ) {
		alert('Level 3 and Level 4 require an MR number');
		return false;
	} else {
		return true;
	}
}

function postGetReviewComments(txt) {
	document.getElementById('comments').innerHTML = txt;	
}

function validateAction(obj) {
	return confirm('Are you sure you want to delete this user?');
	return true;
}

function getComments(txt) {
	document.getElementById('comments').innerHTML = txt;
}
	
function trim(s)
{
	return rtrim(ltrim(s));
}

function ltrim(s)
{
	var l=0;
	while(l < s.length && s[l] == ' ')
	{	l++; }
	return s.substring(l, s.length);
}

function rtrim(s)
{
	var r=s.length -1;
	while(r > 0 && s[r] == ' ')
	{	r-=1;	}
	return s.substring(0, r+1);
}
