/* Utility.js for Utility Functions */
/* General Utility Methods */
// g_configJarr is a global configuration variable which holds the UI Configuration information for that particular client
//var g_mainURLPath = "/rmbh/controller/MAIN?MAIN_EVENT=";
var g_mainURLPath = "/rmbh/controller/MAIN?LAYOUT_TYPE=CLIENT&MAIN_EVENT=";
var g_configJarr  = null;
var pdfWin;
var helpWin;
var g_periodArr = [['', 'Select Period'],['30', 'Last 30 Days'],['60', 'Last 60 Days'],['90', 'Last 90 Days'],['120', 'Last 120 Days']];
var g_planTypeArr = [['', 'Select Type'],['MEDICAL', 'Medical'],['DENTAL', 'Dental'],['PHARM', 'Pharm']];
var g_genderArr = [['', 'Select Gender'],['M', 'Male'],['F', 'Female']];
var g_statusArr = [['', 'Select Status'],['ACT', 'Active'],['TERM', 'Terminated']];

var g_gbatiUserId = null;
var g_gbaitFirstTime = null;
var g_gbaitSessionId = null;

function launchLumina() {
	window.open('/rmbh/rmbh.html',"RMBH","fullscreen=yes,resizable=yes,scrollbars=yes,directories=no,status=yes,toolbar=no,menubar=no,location=no");
}

function doGBAITLogin() {
	g_gbatiUserId = opener.userid;
	//g_gbaitFirstTime = opener.firsttime;
	g_gbaitFirstTime = 'N';
	g_gbaitSessionId = opener.sessionid;
	//loadInitGBAITJSOnDemand(opener.userid, opener.firsttime);
	loadInitGBAITJSOnDemand();
}

function loadLuminaApp() {
	loadInitJSOnDemand();
}

function loadInitJSOnDemand() {
	var jsLoadSuccess = function() {
		var div1 = document.getElementById('load-div');
		var div2 = document.getElementById('loading');
		div1.removeChild(div2);

		App.init();
	};

	ScriptMgr.load({
		scripts: [
			'/rmbh/js/ext/ux/Portal.js',
			'/rmbh/js/ext/ux/PortalColumn.js',
			'/rmbh/js/ext/ux/Portlet.js',
			'/rmbh/js/ext/ux/Ext.ux.util.js',
			'/rmbh/js/ext/ux/Ext.ux.form.LovCombo.js',
			'/rmbh/js/Help.js',
			'/rmbh/js/NumberFormat.js',
			'/rmbh/js/DateValidation.js',
			'/rmbh/js/RMBHConfig.js',
			'/rmbh/js/Message.js',
			'/rmbh/js/MainMenu.js',
			'/rmbh/js/MainController.js',
			'/rmbh/js/LoginWindow.js',
			'/rmbh/js/PolicyWindow.js',
			'/rmbh/js/PwdWindow.js',
			'/rmbh/js/LayoutController.js',
			'/rmbh/js/EventController.js'],
		callback: jsLoadSuccess
	});
}

function loadInitGBAITJSOnDemand() {
	var jsLoadSuccess = function() {
		var div1 = document.getElementById('load-div');
		var div2 = document.getElementById('loading');
		div1.removeChild(div2);
		App.initGBAIT();
	};

	ScriptMgr.load({
		scripts: [
			'/rmbh/js/ext/ux/Portal.js',
			'/rmbh/js/ext/ux/PortalColumn.js',
			'/rmbh/js/ext/ux/Portlet.js',
			'/rmbh/js/ext/ux/Ext.ux.util.js',
			'/rmbh/js/ext/ux/Ext.ux.form.LovCombo.js',
			'/rmbh/js/Help.js',
			'/rmbh/js/NumberFormat.js',
			'/rmbh/js/DateValidation.js',
			'/rmbh/js/RMBHConfig.js',
			'/rmbh/js/Message.js',
			'/rmbh/js/MainMenu.js',
			'/rmbh/js/MainController.js',
			'/rmbh/js/PolicyWindow.js',
			'/rmbh/js/PwdWindow.js',
			'/rmbh/js/LayoutController.js',
			'/rmbh/js/EventController.js'],
		callback: jsLoadSuccess
	});
}

function isReturnEvent(e) {
	e = e || window.event;
	var code = e.keyCode || e.which;
	if(code == 13) {
		return true;
	} else {
		return false;
	}
}

function isEmpty(s)
{   
	return ((s == null) || (s.length == 0) || (s == ""));
}

function formatNumber(p_obj) {
	if (p_obj.value != null && p_obj.value != "") {
		var num = new NumberFormat();
		num.setInputDecimal('.');
		num.setNumber(p_obj.value); // obj.value is '1.2'
		num.setPlaces('1',true);
		num.setSeparators(true, ',', ',');
		
		if (p_obj.value <= 0) {
			p_obj.value = "";
		} else if (num.toFormatted() == "0.00") {
			p_obj.value = "";
		} else {
			p_obj.value = num.toFormatted();
		}
	}
}

function isNumberCheck(v) {
	oneDecimal = false;
	var newValue = v;
	for( var i = 0; i < v.length; i++) {
		var charValue = v.charAt(i);
		if (i == 0 && charValue == "-") {
			continue;
		}
		if (charValue == "." && !oneDecimal) {
			oneDecimal = true;
			continue;
		}
		if (charValue < "0" || charValue > "9") {
			return false;
		}
	}
	return true;
}

function isDigit(s) 
{
	var i;
	for (i = 0; i < s.length; i++)
	{   
		if ((s.charAt(i) > "9") || (s.charAt(i) < "0") )
			return false;
	}
	return true;
}

function isAge(a) {
	if (isDigit(a.value)) {
		return true;
	} else {
		alert("Please enter a Number for the Age.");
		a.focus();
		return false;
	}
}

function isNumFm(a) {
	if (isNumberCheck(a.value)) {
		return true;
	} else {
		alert("Please enter a Number.");
		a.focus();
		return false;
	}
}

function validatePhoneNo(s)
{
	var phoneNumber = new RegExp(/^\d{3}-\d{3}-\d{4}$/);
	if (!phoneNumber.test(s)) {
		return false;
	}
	return true;
}

function validateSSN(s)
{
	var ssn_no = new RegExp(/^\d{3}-\d{2}-\d{4}$/);
	if (!ssn_no.test(s)) {
		return false;
	}
	return true;
}


function validateEmailAddr(s)
{
	var emailExp = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	if (!emailExp.test(s)) {
		return false;
	}
	return true;
}

function validateDate(s)
{
	var dateExp = new RegExp(/^\d{2}\/\d{2}\/\d{4}$/);
	if (!dateExp.test(s)) {
		return false;
	}
	return true;
}

function formatDollars(p_obj,p_spaces) {
	if (p_obj.value != null && p_obj.value != "") {
		var num = new NumberFormat();
		num.setInputDecimal('.');
		num.setNumber(p_obj.value); // obj.value is '1.2'
		if (p_spaces == null) {
			num.setPlaces('4',false);
		} else {
			num.setPlaces(p_spaces,false);
		}
		num.setCurrencyValue('$');
		num.setCurrency(true);
		num.setCurrencyPosition(num.LEFT_OUTSIDE);
		num.setNegativeFormat(num.LEFT_DASH);
		num.setNegativeRed(false);
		num.setSeparators(true, ',', ',');
		p_obj.value = num.toFormatted();
	}
}

/* Application level utility Methods */
function submitFeedback(p_form_id) {
	var formObject = document.getElementById(p_form_id);
	if (isEmpty(formObject.TOPIC.value) &&
			isEmpty(formObject.FEEDBACK.value)) {
			alert(message31);
	} else {
		App.getComponent('EventController').saveFeedback(p_form_id);
	}
}

function openLinkWindow(p_fileName) {
	window.open('/rmbh/html/'+p_fileName);
}

function openGenLinkWindow(p_link) {
	window.open(p_link);
}

function showPwdWindow() {
	App.getComponent('EventController').showPwdWindow();
}

function showHelpWindow(p_index) {
	App.getComponent('EventController').showHelpEvent(p_index);
}

function showMainHelp() {
	App.getComponent('EventController').showHelpEvent('M03');
}

function changeTheme(field) {
	if (field.value == 'GRAY') {
		Ext.util.CSS.swapStyleSheet('theme', "./css/xtheme-gray.css");
	} else if (field.value == 'DEFAULT') {
		Ext.util.CSS.swapStyleSheet('theme', "./css/ext-all.css");
	}
}

function swapImageOn() {
	var imgObj = document.getElementById("home-risk-img");
	imgObj.src = "images/health_riskON.gif";
}

function swapImageOff() {
	var imgObj = document.getElementById("home-risk-img");
	imgObj.src = "images/health_risk.gif";
}

function swapEmpImageOn() {
	var imgObj = document.getElementById("emp-work-img");
	imgObj.src = "images/healthcare_dataON.gif";
}

function swapEmpImageOff() {
	var imgObj = document.getElementById("emp-work-img");
	imgObj.src = "images/healthcare_data.gif";
}

function showFeedback() {
	App.getComponent('EventController').displayFeedback();
}

function getPlanTypeFromDesc(p_planTypeDesc) {
	var planType = p_planTypeDesc.toUpperCase();
	if (planType == "PHARMACY") {
		planType = "PHARM";
	}
	return planType;
}

function initCap(str) { 
	var str = str.substring(0,1).toUpperCase() + str.substring(1,str.length).toLowerCase(); 
	return str; 
}

function loadMemberJSOnDemand(p_layoutID) {
	var jsLoadSuccess = function() {
		App.getComponent('EventController').setHomeAfterLoadEvent(p_layoutID);
	};

	ScriptMgr.load({
		scripts: [
			'/rmbh/js/member/MemUtility.js', 
			'/rmbh/js/member/MemberHomePanel.js', 
			'/rmbh/js/member/AlertsGrid.js', 
			'/rmbh/js/member/ClaimsPanel.js', 
			'/rmbh/js/member/HraPanel.js', 
			'/rmbh/js/member/PreventionPanel.js', 
			'/rmbh/js/member/DiseasePanel.js', 
			'/rmbh/js/member/BmiPanel.js', 
			'/rmbh/js/member/ChrDiseaseWin.js', 
			'/rmbh/js/member/MemChartPanel.js',
			'/rmbh/js/member/MemGridPanel.js',
			'/rmbh/js/member/ChrCondPanel.js', 
			'/rmbh/js/member/ChrDiseasePanel.js',
			'/rmbh/js/member/PreferencePanel.js',
			'/rmbh/js/member/ApptSchdPanel.js',
			'/rmbh/js/common/HTMLLinkWindow.js',
			'/rmbh/js/common/DashboardDetail.js'],
		callback: jsLoadSuccess
	});
}

function loadClientJSOnDemand(p_layoutID) {
	var jsLoadSuccess = function() {
		App.getComponent('EventController').setClientLayoutInitEvent(p_layoutID);
	};

	ScriptMgr.load({
		scripts: [
			'/rmbh/js/client/ClientUtility.js',
			'/rmbh/js/client/ClientMemberWin.js',
			'/rmbh/js/client/ClientMenu.js',
			'/rmbh/js/client/ClientHelpWin.js',
			'/rmbh/js/client/ClientPopPanel.js',
			'/rmbh/js/client/ClientLayoutController.js',
			'/rmbh/js/client/ClientSummaryPanel.js',
			'/rmbh/js/common/HTMLLinkWindow.js',
			'/rmbh/js/client/ClientEventController.js'],
		callback: jsLoadSuccess
	});
}

function getLuminaHtml() {
	var headhtml = ' <table border="0" width="100%" cellpadding=0 cellspacing=0> ';
	headhtml = headhtml + ' <tr> ';
	headhtml = headhtml + ' <td valign=middle align=left ><img border="0" src="/rmbh/images/'+g_homelogo+'"></td> ';
	//headhtml = headhtml + ' <td valign=middle align=left ><img border="0" src="/rmbh/images/UHSLogo.jpg"></td> ';
	headhtml = headhtml + ' </tr> ';
	headhtml = headhtml + ' </table> ';
	return headhtml;
}

function getPDFDownloadHtml(p_fileLink) {
	var pdfhtml = ' <table border="0" width="100%" cellpadding=0 cellspacing=0> ';
	pdfhtml = pdfhtml + ' <tr> ';
	pdfhtml = pdfhtml + ' <td class=text valign=middle align=left ><img src="/rmbh/images/pdficon.gif" style="vertical-align:middle" border="0" alt="Click Link to View Your Health Record">&nbsp;<a href="javascript:void(0)" onClick="javascript:openPDFLinkWindow(\''+ p_fileLink +'\');">Click to View Your Health Record</a></td> ';
	pdfhtml = pdfhtml + ' </tr> ';
	pdfhtml = pdfhtml + ' </table> ';
	return pdfhtml;
}

function showOpenPDFWindow(p_fileLink) {
	pdfWin = new Ext.Window({
        title:'Health Record',
		id:'pdf-win-1',
        width:400,
        height:100,
		modal:true,
		layout:'fit',
		closable:true,
        closeAction:'close',
		autoScroll:true,
		bodyStyle:'padding:5px 5px 5px 5px',
		html:getPDFDownloadHtml(p_fileLink),
		buttons: [{text:'Close',
            handler:function() {
			pdfWin.close();}
		}]
    });
	pdfWin.show();
}

function openPDFLinkWindow(p_link) {
	pdfWin.close();
	window.open(p_link);
}

function isServerError(o) {
	var l_result = false;
	if (o.responseText !== undefined) {
		if (o.statusText == "ServerError") {
			l_result = true;
		}
	}
	return l_result;
}

function getErrorText() {
	return '<div class="error-indicator" style="font-color:red">'+'&nbsp;&nbsp;&nbsp;'+message1+'</div>';
}

function getContainerKey(p_contId) {
	var l_contKey = '';
	for (var i=0; g_configJarr.containers.length; i++) {
		if (g_configJarr.containers[i].cont_id == p_contId) {
			l_contKey = g_configJarr.containers[i].cont_key;
			break;
		}
	}
	return l_contKey;
}

function getContainerAttr(p_contId) {
	var l_contAttr = null;
	for (var i=0; g_configJarr.containers.length; i++) {
		if (g_configJarr.containers[i].cont_id == p_contId) {
			l_contAttr = g_configJarr.containers[i];
			break;
		}
	}
	return l_contAttr;
}

function getComponentAttr(p_contId, p_sortOrder) {
	var l_contAttr = null;
	var l_compAttr = null;
	for (var i=0; g_configJarr.containers.length; i++) {
		if (g_configJarr.containers[i].cont_id == p_contId) {
			l_contAttr = g_configJarr.containers[i];
			for (var j=0; j < l_contAttr.components.length; j++) {
				if (l_contAttr.components[j].sort_order == p_sortOrder) {
					l_compAttr = l_contAttr.components[j];
					return l_compAttr;
				}
			}
		}
	}
}

function getComponentAttrByID(p_contId, p_compId) {
	var l_contAttr = null;
	var l_compAttr = null;
	for (var i=0; g_configJarr.containers.length; i++) {
		if (g_configJarr.containers[i].cont_id == p_contId) {
			l_contAttr = g_configJarr.containers[i];
			for (var j=0; j < l_contAttr.components.length; j++) {
				if (l_contAttr.components[j].comp_id == p_compId) {
					l_compAttr = l_contAttr.components[j];
					return l_compAttr;
				}
			}
		}
	}
}

function getComponentId(p_contId, p_sortOrder) {
	var l_contAttr = null;
	var l_compAttr = null;
	for (var i=0; g_configJarr.containers.length; i++) {
		if (g_configJarr.containers[i].cont_id == p_contId) {
			l_contAttr = g_configJarr.containers[i];
			for (var j=0; j < l_contAttr.components.length; j++) {
				if (l_contAttr.components[j].sort_order == p_sortOrder) {
					l_compAttr = l_contAttr.components[j];
					return l_compAttr.comp_id;
				}
			}
		}
	}
}

function getSubComponentAttr(p_contId, p_compId) {
	var l_contAttr = null;
	var l_compAttr = null;
	var l_subCompAttr = null;
	for (var i=0; g_configJarr.containers.length; i++) {
		if (g_configJarr.containers[i].cont_id == p_contId) {
			l_contAttr = g_configJarr.containers[i];
			for (var j=0; j < l_contAttr.components.length; j++) {
				if (l_contAttr.components[j].comp_id == p_compId) {
					l_compAttr = l_contAttr.components[j];
					for (var k=0; k < l_compAttr.subcomps.length; k++) {
						l_subCompAttr = l_compAttr.subcomps[0];
						return l_subCompAttr;
					}
				}
			}
		}
	}
}

function hasPopup(p_contId, p_compId) {
	var retVal = false;
	var l_contAttr = null;
	var l_compAttr = null;
	for (var i=0; g_configJarr.containers.length; i++) {
		if (g_configJarr.containers[i].cont_id == p_contId) {
			l_contAttr = g_configJarr.containers[i];
			for (var j=0; j < l_contAttr.components.length; j++) {
				if (l_contAttr.components[j].comp_id == p_compId) {
					l_compAttr = l_contAttr.components[j];
					if (l_compAttr.subcomps != null && l_compAttr.subcomps.length > 0) {
						retVal = true;
					}
					break;
				}
			}
			break;
		}
	}
	return retVal;
}


function loadWindowForEOB(p_url) {
	App.getComponent('EventController').openEOBWindow(p_url);
}

function getBrowserScreenWidth()
{
	var l_width = 0;
	if (typeof window.innerWidth != 'undefined') {
		l_width = window.innerWidth;
	}
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if (typeof document.documentElement != 'undefined'	&& typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
		l_width = document.documentElement.clientWidth;
	}
	// older versions of IE
	else {
		l_width = document.getElementsByTagName('body')[0].clientWidth;
	}
	return l_width;
}

function getBrowserScreenHeight()
{
	var l_height = 0;
	if (typeof window.innerWidth != 'undefined') {
		l_height = window.innerHeight;
	}
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	else if (typeof document.documentElement != 'undefined'	&& typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
		l_height = document.documentElement.clientHeight;
	}
	// older versions of IE
	else {
		l_height = document.getElementsByTagName('body')[0].clientHeight;
	}
	return l_height;
}

/* Below are the New Methods for the Member Profile in a window */
function loadInitJSOnDemandForMemProfile() {
	var jsLoadSuccess = function() {
		loadClientDMJSOnDemandMemProf();
	};

	ScriptMgr.load({
		scripts: [
			'/rmbh/js/ext/ux/Portal.js',
			'/rmbh/js/ext/ux/PortalColumn.js',
			'/rmbh/js/ext/ux/Portlet.js',
			'/rmbh/js/ext/ux/Ext.ux.util.js',
			'/rmbh/js/ext/ux/Ext.ux.form.LovCombo.js',
			'/rmbh/js/Help.js',
			'/rmbh/js/NumberFormat.js',
			'/rmbh/js/DateValidation.js',
			'/rmbh/js/RMBHConfig.js',
			'/rmbh/js/Message.js',
			'/rmbh/js/MainMenu.js',
			'/rmbh/js/MainController.js',
			'/rmbh/js/LayoutController.js',
			'/rmbh/js/EventController.js',
			'/rmbh/js/client/ClientEventController.js',
			'/rmbh/js/client/ClientUtility.js'
		],
		callback: jsLoadSuccess
	});
}

function loadClientDMJSOnDemandMemProf() {
	var jsLoadSuccess = function() {
		App.loadClientDMPanels();
		var div1 = document.getElementById('mem-load-div');
		var div2 = document.getElementById('mem-loading');
		div1.removeChild(div2);

		App.initMemProf();

		App.getComponent('EventController').setMemberWindowEvent();
	};
	ScriptMgr.load({
		scripts: [
			'/rmbh/js/member/MemUtility.js', 
			'/rmbh/js/member/MemberHomePanel.js', 
			'/rmbh/js/member/AlertsGrid.js', 
			'/rmbh/js/member/ClaimsPanel.js', 
			'/rmbh/js/member/HraPanel.js', 
			'/rmbh/js/member/PreventionPanel.js', 
			'/rmbh/js/member/DiseasePanel.js', 
			'/rmbh/js/member/BmiPanel.js', 
			'/rmbh/js/member/ChrDiseaseWin.js', 
			'/rmbh/js/member/ChrCondPanel.js', 
			'/rmbh/js/member/ChrDiseasePanel.js',
			'/rmbh/js/member/MemChartPanel.js',
			'/rmbh/js/member/MemGridPanel.js',
			'/rmbh/js/common/HTMLLinkWindow.js',
			'/rmbh/js/common/DashboardDetail.js',
			'/rmbh/js/client/ClientMemberWin.js',
			'/rmbh/js/client/ClientDMActivityPanel.js'],
		callback: jsLoadSuccess
	});
}

function loadMemberProfile() {
	loadInitJSOnDemandForMemProfile();
}

function showHelpPDFWindow(p_fileLink) {
	helpWin = new Ext.Window({
        title:'Lumina Help',
		id:'help-win-1',
		height: 600,
		width: 700,
		bodyCfg: {
			tag: 'iframe',
			src: p_fileLink,
			style: 'border: 0 none'
		},
		maximizable: true,
		modal: false
	});
	helpWin.show();
}

