// ------------------ wizBank Utils object ----------------------------------------
// Convention:
//   public functions : use "wb_utils" prefix
//   private functions: use "_wb_utils" prefix
// ---------------------------------------------------------------------------------
// Index:
// A. Servlet
// B. JSP
// C. Invoke Servlet Functions
// D. Navigation Functions
// E. Generic Functions
// F. Classified Functions
// G.For loading applet
// H. Validate Functions with new Label System

// --------------------- A. Servlet ------------------------------------------------
wb_utils_servlet_package_qdbaction = 'qdbAction'
wb_utils_servlet_package_aeaction = 'aeAction'
wb_utils_servlet_package_dispatcher = 'Dispatcher'
wb_utils_servlet_package_cmi = 'CMI'

wb_utils_servlet_url = '../servlet/' + wb_utils_servlet_package_qdbaction
wb_utils_ae_servlet_url = '../servlet/' + wb_utils_servlet_package_aeaction
wb_utils_disp_servlet_url = '../servlet/' + wb_utils_servlet_package_dispatcher

wb_utils_jsp_root_url = '../jsp/'

//Man:Limit for Common TextField
wb_utils_text_limit = 10000;
wb_image_path = '../wb_image/';
// ---------------------- B.JSP --------------------------------------------------
wb_utils_jsp_home = 'home.jsp'
// --------------------- C. Invoke Servlet Functions -------------------------------
function wb_utils_invoke_servlet(){
	var path = wb_utils_servlet_url + '?'

	path += 'env=wizb';

	for(i = 0; i < arguments.length; i = i + 2){
		if(arguments[i] == 'stylesheet'){
			path += '&' + escape(arguments[i]) + '=' + arguments[i + 1];
		}else{
			path += '&' + escape(arguments[i]) + '=' + escape(arguments[i + 1]);
		}
	}
	return path;
}

function wb_utils_invoke_disp_servlet(){
	var path = wb_utils_disp_servlet_url + '?'

	path += 'env=wizb';

	for(i = 0; i < arguments.length; i = i + 2){
		if(arguments[i] == 'stylesheet'){
			path += '&' + escape(arguments[i]) + '=' + arguments[i + 1];
		}else{
			path += '&' + escape(arguments[i]) + '=' + escape(arguments[i + 1]);
		}
	}
	return path;
}

function wb_utils_invoke_ae_servlet(){
	var path = wb_utils_ae_servlet_url + '?'

	path += 'env=wizb';

	for(i = 0; i < arguments.length; i = i + 2){
		if(arguments[i] == 'stylesheet'){
			path += '&' + escape(arguments[i]) + '=' + arguments[i + 1];
		}else{
			path += '&' + escape(arguments[i]) + '=' + escape(arguments[i + 1]);
		}
	}
	return path;
}

// --------------------- D. Navigation Functions -----------------------------------
// *** Get previous token of navigation ***
function wb_utils_nav_get_urlparam(){
	var url = self.location.href
	for(var i = 0; i < arguments.length; i = i + 2){
		if(arguments[i] == 'app_lst_page' && arguments[i + 1] != null) {
			wb_utils_set_cookie("page",arguments[i + 1]);
		}
		if(arguments[i] == 'app_lst_page_size' && arguments[i + 1] != null) {
			wb_utils_set_cookie("page_size",arguments[i + 1]);
		}
		if(document.all || document.getElementById != null || arguments[i] != 'timestamp'){
			if(getUrl(arguments[i])){
				url = setUrlParam(arguments[i], arguments[i + 1], url);
			}else{
				url = url + '&' + arguments[i] + '=' + arguments[i + 1];
			}
		}
	}
	self.location.href = url;
}

// --------------------- E. Generic Functions --------------------------------------
function wb_utils_preloading(img, lang){
	var feature = 'toolbar=' + 'no' + ',width=' + '300' + ',height=' + '150' + ',scrollbars=' + 'no' + ',resizable=' + 'no' + ',screenX=' + '10' + ',screenY=' + '10' + ',status=' + 'no'

	if(document.all){
		feature += ',top=' + '10'
		feature += ',left=' + '10'
	}
	var str = '<html>'
	str += '<head>'
	str += '<title>wizBank 4.0</title>'
	str += '</head>'
	str += '<body>'
	str += '<table><tr><td align="center">'
	str += '<img src="' + wb_image_path + 'time_counter.gif" border="0">'
	str += '<td align="center"><font face="Arial">'
	str += eval("wb_msg_" + lang + "_processing_msg")
	str += '</font></td></tr></table>'
	str += '</body>'
	str += '</html>'

	parent.tmpWin = gen_open_win("", "preloadingWin", 200, 100, feature);
	parent.tmpWin.document.write(str);
}

function wb_utils_close_preloading(){
	if(parent.tmpWin && !parent.tmpWin.closed){
		parent.tmpWin.close();
	}
}

function wb_utils_set_cookie(token_nm, token_val){
	gen_set_cookie_token('wb', token_nm, token_val, '');
}

function wb_utils_get_cookie(token_nm){
	return gen_get_cookie_token('wb', token_nm);
}

function wb_utils_logout(lang){
	if(confirm(eval('wb_msg_' + lang + '_confirm'))){
		url = wb_utils_invoke_servlet('cmd', 'logout')
		self.location.href = url;
	}
}

function wb_utils_nav_go(nav_id, ent_id, lang, curTime, rol_ext_id){
	var url = null;

	if(lang == null || lang == ''){
		lang = 'en';
	}
	switch(nav_id){

		case "USR_OWN_MAIN" :
			url = wb_utils_invoke_servlet('cmd', 'get_usr', 'usr_ent_id', ent_id, 'stylesheet', 'my_profile.xsl');
			break;

		case "USR_PWD_UPD" :
			url = wb_utils_invoke_servlet('cmd', 'get_usr', 'usr_ent_id', ent_id, 'stylesheet', 'usr_pwd_upd.xsl');
			break;
	
		case "CAT_LIST" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_cat_lst', 'stylesheet', 'catalog_lst.xsl');
			break;
			
		case "CAT_MAIN" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_cat_lst', 'stylesheet', 'catalog_lst.xsl');
			break;
			
		case "STAFF_SOLN_LINK" :
			url = wb_utils_invoke_servlet("cmd", "search_ent_lst", "ent_id", "", "s_role_types", "", "stylesheet", "staff_lrn_plan_srh_res.xsl", "s_usr_id", "", "s_usr_first_name_bil", "", "s_usr_last_name_bil", "", "s_usr_display_bil", "", "s_grade_lst_single", "", "s_grade", "", "s_usg_ent_id_lst", "my_approval");
			break;
			
		case "ITM_MAIN" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_lookup_itm', 'all_ind', 'true', 'exact', 'false', 'tvw_id', 'LIST_VIEW', 'stylesheet', 'itm_lst.xsl', 'show_respon', 'true', 'type', '', 'orderby', 'r_itm_upd_timestamp', 'sortorder', 'desc');
			break;
			
		case "ITM_NEW" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_all_ity_form', 'stylesheet', 'ls_add_form_prep.xsl');
			break;
			
		case "LRN_RES_MAIN" :
			url = wb_utils_adm_syb_lst_url()
			break;
			
		case "ENR_APP_LINK" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_workflow_lst', 'url_failure', wb_utils_gen_home_url(), 'stylesheet', 'application_workflow_lst.xsl');
			break;
				
		case "ENR_APP_COS_LINK" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_approver_appn_cos_lst', 'cur_page', '1', 'page_size', '15', 'sort_col', 'parent_itm_title', 'sort_order', 'ASC', 'url_failure', '', 'stylesheet', 'appr_cos_lst.xsl');
			break;
			
		case "RPT_LINK" :
			url = wb_utils_invoke_disp_servlet('module', 'report.ReportModule', 'cmd', 'get_rpt_lst', 'stylesheet', 'rpt_all.xsl', 'show_public', 'y');
			break;
			
		case "GLB_RPT_LINK" :
			url = wb_utils_invoke_disp_servlet('module', 'report.ReportModule', 'cmd', 'get_rpt_lst', 'stylesheet', 'rpt_glb_all.xsl', 'show_public', 'Y');
			break;
		
		case "LRN_HIST_LINK" :
			url = wb_utils_invoke_disp_servlet('module', 'report.ReportModule', 'cmd', 'lrn_soln_hist', 'usr_ent_id', ent_id,  'stylesheet', 'lrn_history.xsl', 'p', '1', 'sort_col', 'itm_code', 'sort_order', 'asc', 'spec_name', 'itm_content_lst', 'spec_value', 'catalog','itm_p_node','true');
			break;
			
		case "LRN_SOLN_LINK" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_lrn_soln', 'usr_ent_id', ent_id, 'item_type', '', 'stylesheet', 'lrn_soln_view_cos.xsl', 'targeted_item_apply_method_lst', '', 'all_ind', 'true','order_by','code','sort_by','ASC');
			break;
			
		case "BOOK_MAIN" :	
			url = wb_utils_invoke_disp_servlet('module', 'fm.FMModule', 'cmd', 'get_cart', 'stylesheet', 'fm_frame.xsl');
	
			var str_feature = 'toolbar=' + '1' + ',width=' + '780' + ',height=' + '500' + ',scrollbars=' + 'yes' + ',resizable=' + 'yes' + ',screenX=' + '10' + ',screenY=' + '10' + ',status=' + 'yes';
	
			if(document.all){
				str_feature += ',top=' + '10';
				str_feature += ',left=' + '10';
			}
	
			wb_utils_fm_set_cookie('old_rsv_return_url', wb_utils_fm_get_cookie('rsv_return_url'));
			wb_utils_fm_set_cookie('old_rsv_itm_id', wb_utils_fm_get_cookie('rsv_itm_id'));
			wb_utils_fm_set_cookie('old_rsv_itm_title', wb_utils_fm_get_cookie('rsv_itm_title'));
			wb_utils_fm_set_cookie('old_work_rsv_itm_title', wb_utils_fm_get_cookie('work_rsv_itm_title'));
			wb_utils_fm_set_cookie('old_url_success', wb_utils_fm_get_cookie('url_success'));
			wb_utils_fm_set_cookie('old_cur_rsv_id', wb_utils_fm_get_cookie('cur_rsv_id'));
			wb_utils_fm_set_cookie('old_work_rsv_id', wb_utils_fm_get_cookie('work_rsv_id'));
			wb_utils_fm_set_cookie('old_cart', wb_utils_fm_get_cookie('cart'));
	
			wb_utils_fm_set_cookie('rsv_return_url', '');
			wb_utils_fm_set_cookie('rsv_itm_id', '');
			wb_utils_fm_set_cookie('rsv_itm_title', '');
			wb_utils_fm_set_cookie('work_rsv_itm_title', '');
			wb_utils_fm_set_cookie('url_success', '');
			wb_utils_fm_set_cookie('cur_rsv_id', '');
			wb_utils_fm_set_cookie('work_rsv_id', '');
			wb_utils_fm_set_cookie('cart', '');
			fm_win = window.open(url, 'fm', str_feature);
			url = null;		
			break;
		
		case "CM_MAIN" :
			url = wb_utils_invoke_disp_servlet("module", "competency.CompetencyModule", "cmd", "get_comp_grp_list", "stylesheet", "cpty_skill_grp_lst.xsl");
			break;
		
		case "CM_ASS_MAIN" :
			url = wb_utils_invoke_disp_servlet("module", "competency.CompetencyModule", "cmd", "refresh_ass_list", "prepared", "true", "collected", "true", "notified", "true", "resolved", "true", "pagesize", "10", "cur_page", "1", "sort_by", "DESC", "order_by", "asm_eff_start_datetime", "stylesheet", 'comp_ass_get_list.xsl');
			break;
			
		case "CM_SKL_ANALYSIS" :
			wb_utils_set_cookie("sess_url", "");
			url = wb_utils_invoke_disp_servlet("module", "competency.SkillGapModule", "cmd", "view_skill_gap", "stylesheet", 'sk_ana_compare.xsl');
			break;
			
		case "ENR_ASS_LINK" :
			url = wb_utils_invoke_servlet("cmd", "search_ent_lst", "ent_id", '', "s_role_types", "", "stylesheet", 'enrol_assignment_lrn_lst.xsl', "s_usr_id", "", "s_usr_first_name_bil", "", "s_usr_last_name_bil", "", "s_usr_display_bil", "", "s_grade_lst_single", "", "s_grade", "", "s_usg_ent_id_lst", "my_approval");
			break;
			
		case "USR_INFO_MAIN" :
			url = wb_utils_invoke_servlet('cmd', 'get_ent_lst', 'stylesheet', 'usr_manager.xsl');
			break;
			
		case "MOTE_MAIN" :
			url = wb_utils_invoke_disp_servlet('cmd', 'get_resp_mote_lst', 'module', 'mote.MoteModule', 'mote_status', 'progress', 'cur_page', '0', 'page_size', '10', 'sort_col', 'duedate', 'sort_order', 'ASC', 'timestamp', '', 'stylesheet', 'mote_lst.xsl');
			break;
			
		case "ACL_MAIN" :		
			url = wb_utils_invoke_disp_servlet('module', 'accesscontrol.AccessControlModule', 'cmd', 'get_rol_ftn', 'rol_ext_id', rol_ext_id, 'stylesheet', 'adm_acc_control.xsl');
			break;
		
		case "FOR_MAIN" :
			url = wb_utils_invoke_servlet("cmd", "get_public_forum", "ismaintain", 'true', "stylesheet", 'forum_maintain.xsl');
			break;
			
		case "FOR_LINK" :
			url = wb_utils_invoke_servlet("cmd", "get_public_forum", "ismaintain", 'false', "stylesheet", 'forum_maintain.xsl');
			break;
			
		case "SYS_MSG_LIST" :
			url = wb_utils_invoke_servlet('cmd', 'get_msg', 'stylesheet', 'announ_lst.xsl', 'msg_type', 'SYS', 'cur_page', '1', 'sortCol', 'msg_begin_date', 'sortOrder', 'DESC', 'timestamp', '');
			break;
			
		case "LRN_LIST" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_lrn_plan', 'usr_ent_id', ent_id, 'item_type', '', 'stylesheet', 'lrn_plan_more.xsl');
			break;
			
		case "SUPERVISE_MODULE" :
			url = wb_utils_invoke_disp_servlet('module', 'supervise.SuperviseModule', 'cmd', 'get_staff_count', 'stylesheet', 'my_staff_lst.xsl');
			break;
			
		case "USR_REG_APPROVAL_BOX" :
			url = wb_utils_invoke_servlet('cmd', 'search_ent_lst', 's_sort_by','usr_signup_date', 's_order_by','ASC', 's_usg_ent_id_lst', 'my_approval', 's_status', 'PENDING', 'stylesheet', 'usr_reg_approval_lst.xsl');
			break;
			
		case "EVN_MAIN" :
			url = wb_utils_invoke_disp_servlet('module', 'content.EvaluationModule', 'cmd', 'get_public_eval_lst', 'stylesheet', 'evn_maintain_lst.xsl');
			break;
			
		case "EVN_LIST" :
			url = wb_utils_invoke_disp_servlet('module', 'content.EvaluationModule', 'cmd', 'get_public_eval_lst', 'filter', 'true', 'stylesheet', 'evn_lst.xsl');
			break;
			
		case "KM_LINK" :
			url = wb_utils_invoke_servlet('cmd', 'get_prof', 'stylesheet', 'km_lib_cata_frame.xsl');
			break;
			
		case "KM_MGT" :
			url = wb_utils_invoke_servlet('cmd', 'get_prof', 'stylesheet', 'km_lib_main.xsl');
	
			var str_feature = 'toolbar=' + '1' + ',width=' + '780' + ',height=' + '500' + ',scrollbars=' + 'yes' + ',resizable=' + 'yes' + ',screenX=' + '10' + ',screenY=' + '10' + ',status=' + 'yes';
	
			if(document.all){
				str_feature += ',top=' + '10';
				str_feature += ',left=' + '10';
			}
	
			var km_win = window.open(url, 'km', str_feature);
			url = null;		
			break;
			
		case "IMS_DATA_MGT" :	
			url = wb_utils_invoke_servlet('cmd', 'get_prof', 'stylesheet', 'bp_lst.xsl');
			break;
		
		case "KB_MGT" :
			url = wb_utils_invoke_servlet('cmd', 'get_prof', 'stylesheet', 'km_lst.xsl');
			break;
			
		case "KB_MGT_ADMIN" :
			url = wb_utils_invoke_servlet('cmd', 'get_prof', 'stylesheet', 'km_lst.xsl');
			break;
		
		case "USR_OWN_PREFER" :
			url = wb_utils_invoke_disp_servlet('cmd', 'get_my_preference', 'module', 'personalization.PsnPreferenceModule', 'stylesheet', 'psn_preference_upd.xsl');
			break;
		
		case "COS_EVN_MAIN" :
			url = wb_utils_invoke_disp_servlet('module', 'content.CosEvaluationModule', 'cmd', 'get_cos_eval_lst', 'stylesheet', 'cos_evn_form_maintain_lst.xsl');
			break;
			
		case "GLB_CAT_MAIN" :
			url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_glb_cat_lst', 'stylesheet', 'glb_catalog_lst.xsl');
			break;
		case "LRN_STUDYING_INFO" :
			url = wb_utils_invoke_servlet('cmd', 'get_studying_usr_lst', 'stylesheet', 'studying_usr_lst.xsl');
			break;
		//For amway FAQ
		case "FAQ" :
			url = wb_utils_invoke_servlet('cmd', 'get_mod', 'for_faq', 'true', 'stylesheet', 'forum.xsl','sort_col','fto_create_datetime','sort_order','desc');
			var str_feature = 'toolbar=' + '1' + ',width=' + '780' + ',height=' + '500' + ',scrollbars=' + 'yes' + ',resizable=' + 'yes' + ',screenX=' + '10' + ',screenY=' + '10' + ',status=' + 'yes';	
			var sgt_win = window.open(url, 'sgt', str_feature);
			url = null;		
			break;
		//For amway Suggestion Box
		case "FAQ_SGT" :
			url = wb_utils_invoke_servlet('cmd', 'get_mod', 'faq_sgt', 'true', 'extend', '1', 'stylesheet', 'forum_reply.xsl', 'url_failure', '', 'type', 'post_msg','reply','true');
			var str_feature = 'toolbar=' + '1' + ',width=' + '780' + ',height=' + '500' + ',scrollbars=' + 'no' + ',resizable=' + 'no' + ',screenX=' + '10' + ',screenY=' + '10' + ',status=' + 'yes';	
			var sgt_win = window.open(url, 'sgt', str_feature);
			url = null;		
			break;
		//Item Group Management
		case "ITM_GROUP_MAIN" :
			url = wb_utils_invoke_disp_servlet('module', 'itemgroup.ItemGroupModule', 'cmd', 'get_igp_lst', 'stylesheet', 'igp_lst.xsl');
			break;
		//Redemption Management
		case "REDEMPTION_ADMIN" :
			url = wb_utils_invoke_servlet('cmd', 'get_prof', 'stylesheet', 'rd_admin_main.xsl');
			break;
		case "MY_BONUSPOINT" :
			url = wb_utils_invoke_disp_servlet('module','cust.rd.RdModule','cmd','get_my_bpt_rwd','stylesheet','lrn_rdm.xsl');	
			break;
		//Site Message
		case "SMG_SITE_MESSAGE" :
			url = wb_utils_invoke_disp_servlet('module', 'cust.smgmessage.SmgModule','cmd', 'get_site_message','smg_get_type','0','stylesheet', 'smg_site_message.xsl');
			break;
		//mit_mgt
		case "DIM_MGT" :
			url = wb_utils_invoke_disp_servlet('module', 'evaluate.EvaluateModule','cmd', 'evaluat_mg','stylesheet', 'evaluating_mg.xsl');
			break;
			
		//Learning Group Management
		case "LEARNING_GROUP_MAIN" :
			url = wb_utils_invoke_servlet('cmd', 'get_prof','stylesheet', 'lrn_group_main.xsl');
			break;	
	}

	if(url != null){
		if(window.parent == null){
			window.location.href = url;
		}else{
			window.parent.location.href = url;
		}
	}
}

function wb_utils_fm_set_cookie(token_nm, token_val){
	gen_set_cookie_token('fm', token_nm, token_val, '');
}

function wb_utils_fm_get_cookie(token_nm){
	return gen_get_cookie_token('fm', token_nm);
}

function wb_utils_cancel(){
	window.location.href = wb_utils_get_cookie('url_prev');
}

function wb_utils_go_url(url){
	window.location.href = url;
}

function wb_utils_XmlEscape(str){
	str = str.replace(/&/g, "&amp;")
	str = str.replace(/</g, "&lt;")
	str = str.replace(/>/g, "&gt;")
	return str;
}

function wb_utils_JsEscape(str){
	str = str.replace(/\\/g, "\\\\")
	str = str.replace(/'/g, "\\'")
	str = str.replace(/"/g, "\\\"")
	return str; 
}

function addOption(obj, addobj){
	obj.options[obj.options.length] = addobj;
}

function removeSelectedOptions(frm){
	for(var i = (frm.options.length - 1); i >= 0; i--){
		var o = frm.options[i];
		if(o.selected){
			frm.options[i] = null;
		}
	}
	frm.selectedIndex = -1;
}

function doAutoCheck(objFileUpload, objRadioButtonToCheck, objRadioButtonDefault, objHidden) {		
	if (objFileUpload.value!='') {
		objHidden.value = objFileUpload.value
	}
}

//========Move Options Up and Down Function===================
function moveOptionsUp(obj){
	for (i = 0; i < obj.options.length; i++){
		if(obj.options[i].selected){
			if(i != 0 && !obj.options[i - 1].selected){
				swapOptions(obj, i, i - 1);
				obj.options[i - 1].selected = true;
			}
		}
	}
}

function moveOptionsDown(obj){
	for (i = obj.options.length - 1; i >= 0; i--){
		if(obj.options[i].selected){
			if(i != (obj.options.length - 1) && !obj.options[i + 1].selected){
				swapOptions(obj, i, i + 1);
				obj.options[i + 1].selected = true;
			}
		}
	}
}

function swapOptions(obj, i, j){
	var o = obj.options;

	var i_selected = o[i].selected;
	var j_selected = o[j].selected;
	var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	var temp2 = new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
	o[i] = temp2;
	o[j] = temp;
	o[i].selected = j_selected;
	o[j].selected = i_selected;
}

//=======================================================
function wb_utils_popup_close(){
	for(i = 0; i < arguments.length; i++){
		obj = eval('window.' + arguments[i])
		if(obj){
			obj.close();
		}
	}
	self.close();
}

function wb_utils_gen_form_focus(frm, priority_obj_nm){
	var i, ele_len, ele

	ele_len = frm.elements.length
	for(i = 0; i < ele_len; i++){
		ele = frm.elements[i]
		if(priority_obj_nm != null && priority_obj_nm != ""){
			if(ele.name == priority_obj_nm){
				if(ele.disabled != true){
					ele.focus()
					return;
				}
			}
		}else{
			//text,textarea,checkbox,radio,select-multiple,select-one
			if(ele.type == 'text' || ele.type == 'textarea' || ele.type == 'checkbox' || ele.type == 'radio' || ele.type == 'select-multiple' || ele.type == 'select-one'){
				if(ele.disabled != true){
					ele.focus()
					return;
				}
			}
		}
	}
}

// --------------------- F. Classified Functions -----------------------------------
// Home ============================================================================
// *** Gen Home Url ***
function wb_utils_gen_home(go_home){
	url = wb_utils_gen_home_url(go_home)
	window.parent.location.href = url;
}

function wb_utils_gen_home_url(go_home){
	if(go_home == true) {
		url = wb_utils_invoke_servlet('cmd', 'go_home')
	} else {
		url = wb_utils_invoke_servlet('cmd', 'home', 'stylesheet', 'home.xsl')
	}
	return url;
}

// *** Change Role ***
function wb_utils_change_role(frm, lang){
	url = wb_utils_invoke_servlet('cmd', 'change_role', 'rol_ext_id', frm.role_ext_id[frm.role_ext_id.selectedIndex].value);

	if(lang == null){
		lang = 'en'
	}

	var load_msg = eval('wb_msg_' + lang + '_loading_msg')

	if(document.all){
		document.write('<font size="2" face="arial">' + load_msg + '</font>')
	}
	window.location.href = url;
}

// *** Change Language ***
function wb_utils_change_lang(encoding, url_success){
	if(url_success == null || url_success == ""){
		url_success = parent.location.href;
	}
	var url = wb_utils_invoke_servlet("cmd", "change_lan", "label_lan", encoding, "url_success", url_success);
	parent.location.href = url;
}

// *** Catalog Root ***
function wb_utils_cata_lst(){
	var	url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_cat_lst', 'stylesheet', 'catalog_lst.xsl');
		window.location.href = url;
}

// *** Node List ***
function wb_utils_node_lst(tnd_id, list_type, order_by, sort_order, cur_page, page_size){
	var url = wb_utils_node_lst_url(tnd_id, list_type, order_by, sort_order, cur_page, page_size);
		window.parent.location.href = url;
}

function wb_utils_node_lst_url(tnd_id, list_type, order_by, sort_order, cur_page, page_size){
	var url_failure = '';
	var url = '';

	if(list_type == null || list_type == 'item'){
		if(order_by == null){
			if(sort_order == null){
				sort_order = 'asc'
			}
			order_by = 'itm_code'
		}else{
			if(sort_order == null){
				sort_order = 'asc'
			}
		}

		if(cur_page == null || cur_page == ''){
			cur_page = '0';
		}

		if(page_size == null || page_size == ''){
			page_size = '10';
		}
		url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_tnd_cnt_lst', 'tnd_id', tnd_id, 'list', 'item', 'sort_col', order_by, 'sort_order', sort_order, 'page_size', page_size, 'cur_page', cur_page, 'url_failure', url_failure, 'stylesheet', 'itm_node_lst.xsl')
	}else{ 
		url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_tnd_cnt_lst', 'tnd_id', tnd_id, 'list', list_type, 'url_failure', url_failure, 'stylesheet', 'itm_node_lst.xsl')
	}
	return url;
}

// *** Global Node List ***
function wb_utils_glb_node_lst(tnd_id){
	var url_failure = ''
	var url = wb_utils_invoke_ae_servlet('cmd', 'ae_get_tnd_cnt_lst', 'tnd_id', tnd_id, 'list', 'item', 'stylesheet', 'glb_itm_node_lst.xsl')
	window.parent.location.href = url;
}

// *** Resource Manager ***
function wb_utils_adm_syb_lst(privilege,choice){
	if(!choice) choice = "";
	var url = wb_utils_adm_syb_lst_url(privilege,choice)
	window.parent.location.href = url;
}

function wb_utils_adm_syb_lst_url(privilege,choice){
	if(!choice || choice =="")  choice="myFolder";
	if(privilege == null || privilege == ''){
		privilege = 'AUTHOR';
	}

	var url = wb_utils_invoke_servlet('cmd', 'get_syb_obj', 'syb_privilege', privilege, 'res_type', 'QUE~GEN~AICC', 'res_lan', '', 'stylesheet', 'res_obj_lst.xsl','folders',choice)
	return url;
}

// CSS Initiation ==================================================================
function wb_utils_init_css(){
	//Man: to be deprecated from V4
	frm = arguments[0];
	if(document.all || document.getElementById != null){
		n = frm.elements.length;
		for(i = 0; i < n; i++){
			ele = frm.elements[i]
			for(j = 1; j < arguments.length; j++){
				if(ele.type == arguments[j]) ele.className = "wbGenInputFrm"
			}
		}
	}
}

function wb_utils_adm_acc_control(rol_ext_id){
	var url = wb_utils_invoke_disp_servlet("module", "accesscontrol.AccessControlModule", "cmd", "get_rol_ftn", "rol_ext_id", rol_ext_id, "stylesheet", 'adm_acc_control.xsl')
	window.location.href = url;
}

// Learner 2nd level links =========================================================
function wb_utils_lrn_cos_lrn_lst(course_id, orderby, sortby, pagesize, cur_page){
	var str_feature = 'toolbar=' + 'no' + ',width=' + '780' + ',height=' + '400' + ',scrollbars=' + 'yes' + ',resizable=' + 'yes';

	if(orderby == null){
		orderby = 'usr_display_bil';
	}

	if(sortby == null){
		sortby = 'ASC';
	}

	if(pagesize == null){
		pagesize = '10';
	}

	if(cur_page == null){
		cur_page = '1';
	}

	var url = wb_utils_invoke_servlet('course_id', course_id, 'cmd', 'get_cos_lrn_lst', 'order_by', orderby, 'sort_by', sortby, 'pagesize', pagesize, 'cur_page', cur_page, 'stylesheet', 'lrn_cos_lrn_lst.xsl', 'url_failure', '')
	window.open(url, 'cos_lrn_lst', str_feature);
}

function wb_utils_lrn_course_lst(){
	var url = wb_utils_invoke_ae_servlet('cmd','ae_get_all_enrol','stylesheet','lrn_course_lst.xsl');
	window.parent.location.href = url
}

function wb_utils_lrn_prog_details(itm_id){
	var url = wb_utils_invoke_ae_servlet('cmd','ae_get_pgm_enrol','itm_id',itm_id,'stylesheet','lrn_prog_details.xsl','url_failure','javascript:wb_utils_lrn_course_lst()');
	window.parent.location.href = url
}

// ================================================================================
function wb_utils_mt_help(){
	var url = wb_utils_invoke_servlet('cmd', 'get_prof', 'stylesheet', 'help.xsl')
	window.open(url, 'HelpPage', 'status=yes,scrollbars=yes,width=380,height=130')
}

function wb_utils_validate_site_id(fld, lang){
	if(fld.value == ''){
		return false;
	}else{
		return true;
	}
}

// -------------------- G. For loading applet ----------------------------------
// while the applet is finish loading
function wb_utils_finish_loading_applet(){
	// I.E.
	if(document.all){
		self.DIV2.style.left = -1500;
		self.DIV1.style.left = 0;
	}
	// NS6
		else if(document.getElementById){
		document.getElementById("DIV2").style.left = -500;
	}
	// NS other than 6
		else{
		document.layers["DIV2"].left = -500;
	}
}

//Date Utils
function _wbUtilsCalendarMakeArray(){
	this[0] = _wbUtilsCalendarMakeArray.arguments.length;
	for(i = 0; i < _wbUtilsCalendarMakeArray.arguments.length; i = i + 1) this[i + 1] = _wbUtilsCalendarMakeArray.arguments[i];
}

//----------------------H. Validate Functions with new Label System----------------------
// ================================================================================
function wbUtilsValidateEmptyField(fld, txtFldName){
	var val = (fld.type.toLowerCase().indexOf('select') != -1) ? fld.options[fld.selectedIndex].value : val = fld.value;

	if(val.length == 0 || val.search(/^\s+$/) != -1){
		alert(wb_msg_usr_please_specify_value + txtFldName);
		if(fld.type == 'textarea' || fld.type == "text") fld.focus();
		return false;
	}
	return true;
}

// ================================================================================
function wbUtilsValidateDate(fldName, txtFldName){
	// form name should be "frmXml"
	// validate year
	var fld = eval(fldName + '_yy')

	fld.value = gen_trim_string(fld.value)

	if(fld.value.length != 4 || Number(fld.value) < 1800){
		alert(wb_msg_usr_enter_valid_year_1 + txtFldName + wb_msg_usr_enter_valid_year_2)
		fld.focus();
		return false;
	}

	if(!wbUtilsValidateInteger(fld, txtFldName)) return false;

	// validate month
	var fld = eval(fldName + '_mm')
	fld.value = gen_trim_string(fld.value)

	if(Number(fld.value) < 10 && fld.value.length == 1){
		fld.value = '0' + fld.value
	}

	if(fld.value.length != 2 || fld.value > 12 || fld.value < 1){
		alert(wb_msg_usr_enter_valid_month_1 + txtFldName + wb_msg_usr_enter_valid_month_2)
		fld.focus();
		return false;
	}

	if(!wbUtilsValidateInteger(fld, txtFldName)) return false;

	// validate day
	var fld = eval(fldName + '_dd')

	fld.value = gen_trim_string(fld.value)

	if(Number(fld.value) < 10 && fld.value.length == 1){
		fld.value = '0' + fld.value
	}

	if(fld.value.length != 2 || fld.value > gen_Month_Length(Number(eval(fldName + '_mm.value')), eval(fldName + '_yy.value')) || fld.value < 1){
		alert(wb_msg_usr_enter_valid_day_1 + txtFldName + wb_msg_usr_enter_valid_day_2)
		fld.focus();
		return false;
	}

	if(!wbUtilsValidateInteger(fld, txtFldName)) return false;
	return true;
}

// ================================================================================
function wbUtilsValidateInteger(fld, txtFldName){
	var valPass = true

	var val = gen_trim_string(fld.value)

	if((fld.value.indexOf('.') == 0) || (fld.value.lastIndexOf('.') == fld.value.length - 1)){
		valPass = false;
	}else if(val.length == 0 || val.search(/[^0-9]/) != -1){
		if(isNaN(Number(val))){
			valPass = false;
		}
	}
	if(valPass == false){
		alert(wb_msg_usr_enter_integer + txtFldName)
		fld.focus();
		return false;
	}else{
		return true;
	}
}

// ================================================================================
function wbUtilsValidateEmail(fld_email, txtFldName){
	if(fld_email.value.search(/^[^@]+@[^\.]+/) == -1 || fld_email.value.search(/\s/) != -1){
		alert(wb_msg_usr_enter_valid + txtFldName);
		fld_email.focus();
		return false;
	}

	if(fld_email.value.search(/[^A-Za-z0-9_\-@.&!\/]/) != -1){
		alert(wb_msg_usr_enter_valid + txtFldName);
		fld_email.focus();
		return false;
	}
	return true;
}

// ================================================================================
function wbUtilsValidatePositiveInteger(fld, txtFldName){
	// This function check for integer range  0  to  2^31
	// Notes: Include zero
	var val = gen_trim_string(fld.value)

	if(val.search(/[^0-9]/) != -1){
		alert(wb_msg_usr_enter_positive_integer + txtFldName);
		fld.focus();
		return false;
	}

	if(val > Math.pow(2, 31)){
		alert(txtFldName + wb_msg_usr_enter_smaller_number);
		fld.focus();
		return false;
	}
	return true;
}
// ================================================================================
function wbUtilsValidateNonZeroPositiveInteger(fld, txtFldName){
	// This function check for integer range  1  to  2^31
	// Notes: NOT include zero
	var val = gen_trim_string(fld.value)

	if(val == 0){
		alert(wb_msg_usr_enter_positive_integer + txtFldName);
		fld.focus();
		return false;
	}	
	
	if(val.search(/[^0-9]/) != -1){
		alert(wb_msg_usr_enter_positive_integer + txtFldName);
		fld.focus();
		return false;
	}

	if(val > Math.pow(2, 31)){
		alert(txtFldName + wb_msg_usr_enter_smaller_number);
		fld.focus();
		return false;
	}
	return true;
}
// ================================================================================
function wbUtilsValidateUserPassword(fld_usr_pwd, txtFldName, min, max){
	/*
	Format:	Alphabets
			numbers
			underscore (_)
			hypen (-)
	*/
	/*
	var _MIN_FIELD_LEN = 4

	var _MAX_FIELD_LEN = 20
	*/
	
	if(fld_usr_pwd.value.length == 0){
		alert(wb_msg_usr_please_enter_the + '"' + txtFldName + '"');
		fld_usr_pwd.focus();
		return false;
	}
	
	if( min != '' ) {
		if(fld_usr_pwd.value.length < min){
			//alert(wb_msg_usr_please_enter_at_least + min + wb_msg_usr_character_for_the + '"' + txtFldName + '"');
			alert(wb_msg_usr_enter_valid + '"' + txtFldName + '"' + '. ' + wb_msg_usr_min_character + min);
			fld_usr_pwd.focus();
			return false;
		}
	}
	
	if(fld_usr_pwd.value.search(/[^A-Za-z0-9-_]/) != -1){
		alert(wb_msg_usr_enter_valid + '"' + txtFldName + '"')
		fld_usr_pwd.focus();
		return false;
	}

	if( max != '' ) {
		if(fld_usr_pwd.value.length > max){
			alert(wb_msg_usr_enter_valid + '"' + txtFldName + '"')
			fld_usr_pwd.focus()
			return false;
		}
	}
	return true;
}

// ================================================================================
function wbUtilsValidateUserId(fld_usr_id, txtFldName, min, max){
	/*
	Format:	Lower case alphabets
			numbers
			underscore (_)
			hypen (-)
	*/
	if(fld_usr_id.value.toLowerCase() != fld_usr_id.value){
		alert(wb_msg_usr_enter_lower_case_char + '"' + txtFldName + '"');
		fld_usr_id.focus();
		return false;
	}

	if(fld_usr_id.value.search(/[^A-Za-z0-9_-]/) != -1){
		alert(wb_msg_usr_enter_english_char + '"' + txtFldName + '"');
		fld_usr_id.focus();
		return false;
	}

	if(fld_usr_id.value.length == 0){
		alert(wb_msg_usr_please_enter_the + '"' + txtFldName + '"');
		fld_usr_id.focus();
		return false;
	}
	
	if( min != '' ) {
		if (fld_usr_id.value.length < min) {
			//alert(wb_msg_usr_please_enter_at_least+ min + wb_msg_usr_character_for_the +'"' + txtFldName + '"');
			alert(wb_msg_usr_enter_valid + '"' + txtFldName + '"' + '. ' + wb_msg_usr_min_character + min);
			fld_usr_id.focus();
			return false;
		}
	}
	
	if( max != '' ) {
		if(fld_usr_id.value.length > max){
			alert(wb_msg_usr_enter_valid + '"' + txtFldName+ '"')
			fld_usr_id.focus()
			return false;
		}
	}
	return true;
}

//wb_utils_check_chinese_char
function wb_utils_check_chinese_char(name) {
		if(name.search(/[^A-Za-z0-9 ~`!@%&()_=|{}:;"'<>,.\/\#\$\^\*\-\+\[\]\?\\]/)!=-1){
	        alert(wb_msg_name_with_CN);
		return false;
		}
	return true;	
}

function wb_utils_check_invalid_filename(filename){
		if(name.search(/&<\"/)!=-1){
		alert(wb_msg_name_with_CN);
		return false;
		}
	return true;	
}

//wb_utils_get_filename_from_path
function wb_utils_get_filename_from_path(path){
	var indexOfLastFileSeperator = 0;
	var seperator1,seperator2;
	seperator1 = path.lastIndexOf('\\');
	seperator2 = path.lastIndexOf('/');
	if(seperator1==seperator2){
		return path;
	}
	else if(seperator1>seperator2){
		return path.substring(seperator1+1);
	}else{
		return path.substring(seperator2+1);
	}
}


//wb_utils_check_duplicate_filename
function wb_utils_check_duplicate_filename(frm,file_eles,paths){
	var files = new Array;
	var cur_index = 0;
	var cur_filename = '';
	for (var i = 0 ; i < paths.length ; i++){
		cur_filename = wb_utils_get_filename_from_path(paths[i]);
		for(var j = 0 ; j < files.length ; j++){
			if(cur_filename!='' && cur_filename == files[j]){
				alert(wb_msg_duplicate_filename);
				eval("frm."+file_eles[i]).focus();
			return -1;
			}
		}
		files[i] = cur_filename;
	}
}

function getXMLHttpRequest() {
	req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
	}
	if(req) {
		return req;
	}
}
