You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
404 lines
17 KiB
404 lines
17 KiB
<?php |
|
|
|
/** |
|
* Common javascript functions are stored in this page. |
|
* |
|
* @package OpenEMR |
|
* @link http://www.open-emr.org |
|
* @author Eldho Chacko <eldho@zhservices.com> |
|
* @author Paul Simon K <paul@zhservices.com> |
|
* @author Brady Miller <brady.g.miller@gmail.com> |
|
* @copyright Copyright (c) 2011 Z&H Consultancy Services Private Limited <sam@zhservices.com> |
|
* @copyright Copyright (c) 2018 Brady Miller <brady.g.miller@gmail.com> |
|
* @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3 |
|
*/ |
|
|
|
?> |
|
<script> |
|
//Calendar Functions to set From and To dates |
|
function calendar_function(val, from, to) { |
|
|
|
var date = new Date(); |
|
fromdate = document.getElementById(from); |
|
todate = document.getElementById(to); |
|
if (val == 'this_month_to_date') { |
|
var dt = date.getDate() - 1; |
|
fromdate.value = disp_date(-dt, 0, 0); |
|
todate.value = disp_date(0, 0, 0); |
|
} else if (val == 'today') { |
|
fromdate.value = disp_date(0, 0, 0); |
|
todate.value = disp_date(0, 0, 0); |
|
} else if (val == 'last_month') { |
|
var m = date.getMonth(); |
|
var yy = date.getYear(); |
|
var mt = daysInMonth(m, yy); |
|
fromdate.value = last_month() + "-01"; |
|
todate.value = last_month() + "-" + mt; |
|
} else if (val == 'this_calendar_year') { |
|
var dt = date.getDate() - 1; |
|
var m = date.getMonth(); |
|
fromdate.value = disp_date(-dt, -m, 0); |
|
dt = 30 - dt; |
|
m = 11 - m; |
|
todate.value = disp_date(dt, m, 0); |
|
} else if (val == 'last_calendar_year') { |
|
var dt = date.getDate() - 1; |
|
var m = date.getMonth(); |
|
fromdate.value = disp_date(-dt, -m, -1); |
|
dt = 30 - dt; |
|
m = 11 - m; |
|
todate.value = disp_date(dt, m, -1); |
|
} else if (val == 'this_week_to_date') { |
|
fromdate.value = week_date(); |
|
todate.value = disp_date(0, 0, 0); |
|
} else { |
|
fromdate.value = ''; |
|
todate.value = ''; |
|
} |
|
|
|
} |
|
|
|
//Below functions are called in the above function |
|
function disp_date(dt, mt, yr) { |
|
var date = new Date(); |
|
var d = date.getDate() + dt; |
|
var day = (d < 10) ? '0' + d : d; |
|
var m = date.getMonth() + 1 + mt; |
|
var month = (m < 10) ? '0' + m : m; |
|
var yy = date.getYear() + yr; |
|
var year = (yy < 1000) ? yy + 1900 : yy; |
|
current = (year + "-" + month + "-" + day); |
|
return current; |
|
} |
|
|
|
function daysInMonth(month, year) { |
|
var dd = new Date(year, month, 0); |
|
return dd.getDate(); |
|
} |
|
|
|
function last_month() { |
|
var date = new Date(); |
|
var yy = date.getYear(); |
|
var m = date.getMonth(); |
|
if (date.getMonth() == 0) { |
|
yy--; |
|
m = 12; |
|
} |
|
var month = (m < 10) ? '0' + m : m; |
|
var year = (yy < 1000) ? yy + 1900 : yy; |
|
current = (year + "-" + month); |
|
return current; |
|
} |
|
|
|
function week_date() { |
|
var today = new Date(); |
|
var day = today.getDate(); |
|
var month = today.getMonth() + 1; |
|
var year = today.getYear(); |
|
if (year < 2000) |
|
year = year + 1900; |
|
var offset = today.getDay(); |
|
var week; |
|
|
|
if (offset != 0) { |
|
day = day - offset; |
|
if (day < 1) { |
|
if (month == 1) day = 31 + day; |
|
if (month == 2) day = 31 + day; |
|
if (month == 3) { |
|
if ((year == 00) || (year == 04)) { |
|
day = 29 + day; |
|
} else { |
|
day = 28 + day; |
|
} |
|
} |
|
if (month == 4) day = 31 + day; |
|
if (month == 5) day = 30 + day; |
|
if (month == 6) day = 31 + day; |
|
if (month == 7) day = 30 + day; |
|
if (month == 8) day = 31 + day; |
|
if (month == 9) day = 31 + day; |
|
if (month == 10) day = 30 + day; |
|
if (month == 11) day = 31 + day; |
|
if (month == 12) day = 30 + day; |
|
if (month == 1) { |
|
month = 12; |
|
year = year - 1; |
|
} else { |
|
month = month - 1; |
|
} |
|
} |
|
} |
|
month = (month < 10) ? '0' + month : month; |
|
day = (day < 10) ? '0' + day : day; |
|
week = year + "-" + month + "-" + day; |
|
return week; |
|
} |
|
|
|
//================================================================================================================================ |
|
//Search Functionality |
|
function CriteriaVisible()//This function is called when, on change event happens, in the select box containing all the search criteria of the page. |
|
{//This shows different values based on the type of the search criteria.For 'date' type it shows 'From' 'To' etc. |
|
for (OptionIndex = 0; OptionIndex < document.getElementById('choose_this_page_criteria').options.length; OptionIndex++) { |
|
choose_this_page_criteria_value = document.getElementById('choose_this_page_criteria').options[OptionIndex].value; |
|
if (document.getElementById('table_' + choose_this_page_criteria_value)) |
|
document.getElementById('table_' + choose_this_page_criteria_value).style.display = 'none'; |
|
} |
|
choose_this_page_criteria_value = document.getElementById('choose_this_page_criteria').options[document.getElementById('choose_this_page_criteria').selectedIndex].value; |
|
document.getElementById('table_' + choose_this_page_criteria_value).style.display = ''; |
|
} |
|
|
|
function checkOptionExist(value0, seperator)//It returns the position of the option, if the value is found, in the final criteria select box submitted. |
|
{//If doesn't exist new insertion is done.If exist it is updated. |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
var i; |
|
for (i = elSel.length - 1; i >= 0; i--) { |
|
OptionValue = elSel.options[i].value; |
|
OptionValue = OptionValue.split('|' + seperator.trim()); |
|
if (OptionValue[0] == value0) { |
|
return i; |
|
} |
|
} |
|
return -1; |
|
} |
|
|
|
function checkOptionExistDateCriteria(value0)//For Date Criteria.It returns the position of the option, if the value is found, |
|
{//in the final criteria select box submitted.//If doesn't exist new insertion is done.If exist it is updated. |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
var i; |
|
for (i = elSel.length - 1; i >= 0; i--) { |
|
OptionValue = elSel.options[i].value; |
|
OptionValue = OptionValue.split('|between|'); |
|
if (OptionValue[0] == value0) { |
|
return i; |
|
} |
|
} |
|
return -1; |
|
} |
|
|
|
function appendOptionRadioCriteria(text0, value0, text1, value1, seperator, Type) {//If option doesn't exist new insertion is done.If exist it is updated in the select drop down.//Remove the item if the option is All. |
|
var elOptNew = document.createElement('option'); |
|
if (Type == 'radio' || Type == 'query_drop_down') { |
|
elOptNew.text = text0 + seperator + text1; |
|
elOptNew.value = value0 + "|" + seperator.trim() + "|" + value1; |
|
} else if (Type == 'radio_like') { |
|
elOptNew.text = text0 + ' = ' + text1; |
|
elOptNew.value = value0 + "|" + seperator.trim() + "|" + value1; |
|
} |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
TheOptionIndex = checkOptionExist(value0, seperator); |
|
if (TheOptionIndex == -1) { |
|
if (value1 != 'all') { |
|
try { |
|
elSel.add(elOptNew, null); // standards compliant; doesn't work in IE |
|
} catch (ex) { |
|
elSel.add(elOptNew); // IE only |
|
} |
|
} |
|
} else if (value1 == 'all') { |
|
elSel.remove(TheOptionIndex); |
|
} else { |
|
elSel.options[TheOptionIndex].value = elOptNew.value; |
|
elSel.options[TheOptionIndex].text = elOptNew.text; |
|
} |
|
} |
|
|
|
function appendOptionTextCriteria(text0, value0, text1, value1, seperator, Type) {//If option doesn't exist new insertion is done.If exist it is updated in the select drop down.//Remove the item if the value is blank. |
|
var elOptNew = document.createElement('option'); |
|
elOptNew.text = text0 + seperator + text1; |
|
if (Type == 'text') { |
|
elOptNew.value = value0 + "|" + seperator.trim() + "|" + value1; |
|
} else if (Type == 'text_like') { |
|
elOptNew.value = value0 + "|" + seperator.trim() + "|" + value1 + "%"; |
|
} |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
TheOptionIndex = checkOptionExist(value0, seperator); |
|
if (TheOptionIndex == -1) { |
|
if (!(value1 == '' || value1 == ' '))//' ' is for ajax case |
|
{ |
|
try { |
|
elSel.add(elOptNew, null); // standards compliant; doesn't work in IE |
|
} catch (ex) { |
|
elSel.add(elOptNew); // IE only |
|
} |
|
} |
|
} else if (value1 == '' || value1 == ' ') { |
|
elSel.remove(TheOptionIndex); |
|
} else { |
|
elSel.options[TheOptionIndex].value = elOptNew.value; |
|
elSel.options[TheOptionIndex].text = elOptNew.text; |
|
} |
|
} |
|
|
|
function appendOptionDateCriteria(text0, value0, text1, value1, seperator, FromDate, ToDate, Type)//For Date drop down |
|
{//If option doesn't exist new insertion is done.If exist it is updated in the select drop down.//Remove the item if the drop down is All. |
|
var elOptNew = document.createElement('option'); |
|
elOptNew.text = text0 + seperator + text1; |
|
FromDateValue = document.getElementById(FromDate).value; |
|
ToDateValue = document.getElementById(ToDate).value; |
|
// only require biller to enter from date |
|
ToDateValue = (ToDateValue == '') ? FromDateValue : ToDateValue; |
|
if (Type == 'date') { |
|
elOptNew.value = value0 + "|between|" + FromDateValue + "|" + ToDateValue; |
|
} |
|
if (Type == 'datetime') { |
|
elOptNew.value = value0 + "|between|" + FromDateValue + " 00:00:00|" + ToDateValue + " 23:59:59"; |
|
} |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
TheOptionIndex = checkOptionExistDateCriteria(value0); |
|
if (TheOptionIndex == -1) { |
|
if (value1 != 'all') { |
|
try { |
|
elSel.add(elOptNew, null); // standards compliant; doesn't work in IE |
|
} catch (ex) { |
|
elSel.add(elOptNew); // IE only |
|
} |
|
} |
|
} else if (value1 == 'all') { |
|
elSel.remove(TheOptionIndex); |
|
} else { |
|
elSel.options[TheOptionIndex].value = elOptNew.value; |
|
elSel.options[TheOptionIndex].text = elOptNew.text; |
|
} |
|
} |
|
|
|
function CleanUpAjax(text0, value0, seperator) {//Cleans the values in the ajax (Insurance Company criteria) |
|
document.getElementById('type_code').value = ''; |
|
document.getElementById('hidden_ajax_close_value').value = ''; |
|
document.getElementById('hidden_type_code').value = ''; |
|
document.getElementById('div_insurance_or_patient').innerHTML = ''; |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
TheOptionIndex = checkOptionExist(value0, seperator); |
|
if (TheOptionIndex == -1) { |
|
} else { |
|
elSel.remove(TheOptionIndex); |
|
} |
|
} |
|
|
|
function removeOptionSelected() {//Remove the selected options from the drop down. |
|
OptionRemoved = 'no'; |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
var i; |
|
for (i = elSel.length - 1; i >= 0; i--) { |
|
if (elSel.options[i].selected) { |
|
elSel.remove(i); |
|
OptionRemoved = 'yes'; |
|
} |
|
} |
|
if (OptionRemoved == 'no') { |
|
alert(<?php echo xlj('Select Criteria to Remove'); ?>) |
|
} |
|
} |
|
|
|
function removeOptionsAll() {//Remove all options from the drop down. |
|
OptionRemoved = 'no'; |
|
var elSel = document.getElementById('final_this_page_criteria'); |
|
var i; |
|
for (i = elSel.length - 1; i >= 0; i--) { |
|
if (elSel.options[i]) { |
|
elSel.remove(i); |
|
OptionRemoved = 'yes'; |
|
} |
|
} |
|
if (OptionRemoved == 'no') { |
|
alert(<?php echo xlj('Select Criteria to Remove'); ?>) |
|
} |
|
} |
|
|
|
function ProcessBeforeSubmitting()//Validations and necessary actions are taken here. |
|
{//Text of the drop down 'final_this_page_criteria' is copied to the value of the drop down 'final_this_page_criteria_text' |
|
//So that both value and text of the final criteria can be restored back. |
|
if (!ValidateDateCriteria('final_this_page_criteria')) { |
|
return false; |
|
} |
|
var selObj = document.getElementById('final_this_page_criteria'); |
|
var elSel = document.getElementById('final_this_page_criteria_text'); |
|
var i; |
|
for (i = elSel.length - 1; i >= 0; i--) { |
|
elSel.remove(i); |
|
} |
|
for (i = 0; i < selObj.options.length; i++) { |
|
var elOptNew = document.createElement('option'); |
|
elOptNew.text = 'Sample';//This value has no relevance can be any thing. |
|
elOptNew.value = selObj.options[i].text; |
|
try { |
|
elSel.add(elOptNew, null); // standards compliant; doesn't work in IE |
|
} catch (ex) { |
|
elSel.add(elOptNew); // IE only |
|
} |
|
} |
|
selectAllOptions('final_this_page_criteria'); |
|
selectAllOptions('final_this_page_criteria_text'); |
|
return true; |
|
} |
|
|
|
function selectAllOptions(selStr) {//Before submitting the multiselct drop downs are selected,then only they will be got in php. |
|
var selObj = document.getElementById(selStr); |
|
for (var i = 0; i < selObj.options.length; i++) { |
|
selObj.options[i].selected = true; |
|
} |
|
} |
|
|
|
function SetDateCriteriaCustom(ObjectPassed) {//Setting the value of drop down to 'custom' when user changes the date manually using the date picker. |
|
var selObj = document.getElementById(ObjectPassed); |
|
selObj.value = 'custom'; |
|
} |
|
|
|
function ValidateDateCriteria(selStr) {//From date should not be greater than To date. |
|
var selObj = document.getElementById(selStr); |
|
for (var i = 0; i < selObj.options.length; i++) { |
|
if (selObj.options[i].value.indexOf('between') != -1) { |
|
DateArray = selObj.options[i].value.split("'"); |
|
if (DateArray[1] > DateArray[3]) { |
|
alert(<?php echo xlj('From Date Cannot be Greater than To Date.'); ?>); |
|
return false; |
|
} |
|
if (DateArray[1] == '' || DateArray[3] == '') { |
|
alert(<?php echo xlj('Date values Cannot be Blank.'); ?>); |
|
return false; |
|
} |
|
} |
|
} |
|
return true; |
|
} |
|
|
|
function getPosition(who, TopOrLeft) {//Returns the top and left position of the passed object. |
|
var T = 0, L = 0; |
|
while (who) { |
|
L += who.offsetLeft; |
|
T += who.offsetTop; |
|
who = who.offsetParent; |
|
} |
|
if (TopOrLeft == 'Top') |
|
return T; |
|
else if (TopOrLeft == 'Left') |
|
return L; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------------------- |
|
//In Internet Explorer the ajax drop down of insurance was gettign hidden under the select drop down towards the right side. |
|
//So an iframe is added to solve this issue. |
|
//------------------------------------------------------------------------------------------------------------------------- |
|
function show_frame_to_hide() {//Show the iframe |
|
if (document.getElementById("AjaxContainerInsurance")) { |
|
document.getElementById("frame_to_hide").style.top = getPosition(document.getElementById('ajax_div_insurance'), 'Top') + "px"; |
|
document.getElementById("frame_to_hide").style.left = getPosition(document.getElementById('final_this_page_criteria'), 'Left') + "px"; |
|
document.getElementById("frame_to_hide").style.display = "inline"; |
|
} |
|
} |
|
|
|
function hide_frame_to_hide() {//Hide the iframe |
|
if (!document.getElementById("AjaxContainerInsurance")) { |
|
document.getElementById("frame_to_hide").style.display = "none"; |
|
} |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------------------- |
|
function TakeActionOnHide()//Action on clicking out side the ajax drop down of insurance.Hides the same. |
|
{ |
|
HideTheAjaxDivs(); |
|
hide_frame_to_hide(); |
|
} |
|
|
|
//=================================================================================================================================== |
|
</script>
|
|
|