var country_combo_obj;
var state_combo_obj;
var branch_combo_obj;

var country_arr = new Array();
var state_arr = new Array();
var branch_arr = new Array();
var branch_code_unique_array = new Array();

var country_code_del = false;
var country_desc_del = false;
var country_del = "~";
var state_code_del = false;
var state_desc_del = false;
var state_del = "~";
var branch_code_del = false;
var branch_desc_del = false;
var branch_del = "~";

/* Usage: 
 * Set country, state, branch delimiters if required (default value false)
 * In doLoad() method of jsp, call :
 * 	1. loadCombos(form_name, country_combo_name, state_combo_name, branch_combo_name)
 * 	2. populate_country() 
 * 
 * And populate_state() onChange of branch, 
 * populate_branch() onChange of state
 */

function setCountryDel(code_value,desc_value,del_value){
	country_code_del = code_value;
	country_desc_del = desc_value;
	country_del = del_value;	
}
function setStateDel(code_value,desc_value,del_value){
	state_code_del = code_value;
	state_desc_del = desc_value;
	state_del = del_value;	
}
function setBranchDel(code_value,desc_value,del_value){
	branch_code_del = code_value;
	branch_desc_del = desc_value;
	branch_del = del_value;	
}

function loadCombos(form_name, country_combo_name, state_combo_name, branch_combo_name) {
	country_combo_obj = eval("document."+form_name+"."+country_combo_name);
	state_combo_obj = eval("document."+form_name+"."+state_combo_name);
	branch_combo_obj = eval("document."+form_name+"."+branch_combo_name);
}

//branch_combo_flag => value is true or false
// Parameters: branch_combo_flag
function populate_country() {
	var reset_flag = true;
	if (arguments.length == 1) {
		reset_flag = arguments[0];
	}
	branch_combo_flag = true;
	if (arguments.length != 0) {
		branch_combo_flag = arguments[0];
	}	
	country_arr = new Array();
	if(reset_flag){
		resetCombo(country_combo_obj);
		resetCombo(state_combo_obj);
	}
	if (branch_combo_flag) {
		resetCombo(branch_combo_obj);
	}
	
	var index = 0;
	for (var i = 0; i < country_mst.length; ++i) {
		var record = country_mst[i];
		var split_arr = record.split("~");
		var country_code_temp = split_arr[0];
		var country_name_temp = split_arr[1];
		var country_code = country_code_temp;
		var country_name = country_name_temp;
		if (country_code_del) {
			country_code = country_code_temp + country_del + country_name_temp;
		}
		if (country_desc_del) {
			country_name = country_code_temp + country_del + country_name_temp;
		}
		var value = "('"+country_name+"', '"+country_code+"')";
		country_arr[index++] = value;
	}
	country_combo_obj.options[0] = new Option('Not Selected','');	
	for (var k = 0; k < country_arr.length; ++k ) { 
		eval( "country_combo_obj.options["+(k+1)+"] = new Option"+country_arr[k] );	
	}
}

//branch_combo_flag => value is true or false
// Parameters: branch_combo_flag,state_multi_flag
function populate_state() {
	state_arr = new Array();

	branch_combo_flag = true;
	state_multi_flag = false;
	if (arguments.length == 1) {
		branch_combo_flag = arguments[0];
	} else 	if (arguments.length == 2) {
		branch_combo_flag = arguments[0];
		state_multi_flag = arguments[1];
	}
	resetCombo(state_combo_obj);
	if (branch_combo_flag) {
		resetCombo(branch_combo_obj);
	}
	
	var index = 0;
	var selected_country = country_combo_obj.value;

	for (var i = 0; i < state_mst.length; ++i) {
		var record = state_mst[i];
		var split_arr = record.split("~");
		var state_code_temp = split_arr[0];
		var state_name_temp = split_arr[1];
		var country_code = split_arr[2];
		var country_code_temp = "";
		if (country_code_del) {
			var split_country_arr = selected_country.split(country_del);
			country_code_temp = split_country_arr[0];
		} else {
			country_code_temp = selected_country;
		}	
		if (country_code == country_code_temp) {
			var state_code = state_code_temp;
			var state_name = state_name_temp;
			if (state_code_del) {
				state_code = state_code_temp + state_del + state_name_temp;
			}
			if (state_desc_del) {
				state_name = state_code_temp + state_del + state_name_temp;
			}
			var value = "('"+state_name+"', '"+state_code+"')";
			state_arr[index++] = value;
		}
	}
	if (state_multi_flag) {
		state_combo_obj.options[0] = new Option('All','All');	
	} else {
		state_combo_obj.options[0] = new Option('Not Selected','');		
	}
	for (var k = 0; k < state_arr.length; ++k ) { 
		eval( "state_combo_obj.options["+(k+1)+"] = new Option"+state_arr[k] );	
	}	
}

// Parameters: multiple_flag, branch_arr
function populate_branch() {
	var sel_branch_arr = new Array();
	is_multiple_flag = false;
	if (arguments.length == 1) {
		is_multiple_flag = arguments[0];
	} else 	if (arguments.length == 2) {
		is_multiple_flag = arguments[0];
		sel_branch_arr = arguments[1];
	}
	branch_arr = new Array();
	branch_code_unique_array = new Array();

	resetCombo(branch_combo_obj);
	var index = 0;
	var unique_index = 0;
	var selected_state = state_combo_obj.value;
	
	for (var i = 0; i < branch_state_mst.length; ++i) {
		var record = branch_state_mst[i];
		var split_arr = record.split("~");
		var branch_code_temp = split_arr[0];
		if ((sel_branch_arr.length == 0) || (contains_arr(branch_code_temp, sel_branch_arr))) {
			var state_code = split_arr[1];
			var state_code_temp = "";
			if (state_code_del) {
				var split_state_arr = selected_state.split(state_del);
				state_code_temp = split_state_arr[0];
			} else {
				state_code_temp = selected_state;
			}
			if ((state_code == state_code_temp) || (state_code_temp == "All")) {
				if (branch_code_del) {
					var split_branch_arr = branch_code_temp.split(branch_del);
					branch_code_temp = split_branch_arr[0];
				}
				var branch_name_temp = getEntityName(branch_code_temp);
				var branch_code = branch_code_temp;
				var branch_name = branch_name_temp;
				if (branch_code_del) {
					branch_code = branch_code_temp + branch_del + branch_name_temp;
				}
				if (branch_desc_del) {
					branch_name = branch_code_temp + branch_del + branch_name_temp;
				}
				
				if (!contains_arr(branch_code_temp, branch_code_unique_array)) {
					var value = "'"+branch_name+"', '"+branch_code+"'";
					branch_arr[index++] = value;
					branch_code_unique_array[unique_index++] = branch_code_temp;
				}
			}
		}
	}
	branch_arr = branch_arr.sort();
	if (is_multiple_flag) {
		branch_combo_obj.options[0] = new Option('All','all');
	} else {
		branch_combo_obj.options[0] = new Option('Not Selected','');	
	}
	
	for (var k = 0; k < branch_arr.length; ++k ) { 
		eval( "branch_combo_obj.options["+(k+1)+"] = new Option("+branch_arr[k]+")");	
	}	
}

function contains_arr(code, arr) {
	for(var i = 0; i < arr.length; i++) {
			if(arr [i] == code)
				return true;
	}
	return false;
}

// Parameters: branch_arr ==> selected values in branch combo: either single or multi
// multiple or single
function populate_state_from_branch() {
	var sel_branch_arr = new Array();
	is_multiple = false;
	if (arguments.length == 1) {
		sel_branch_arr = arguments[0];
	} else if (arguments.length == 2) {
		sel_branch_arr = arguments[0];
		is_multiple = arguments[1];
	} 
	state_arr = new Array();
	resetCombo(state_combo_obj);
	var index = 0;
	
	for (var i = 0; i < branch_state_mst.length; ++i) {
		var record = branch_state_mst[i];
		var split_arr = record.split("~");
		var branch_code_temp = split_arr[0];
		var state_code_temp = split_arr[1];
		var branch_code = "";
		for (var j = 0; j < sel_branch_arr.length; ++j) {
			if (branch_code_del) {
				var split_sel_branch_arr = sel_branch_arr[j].split(branch_del);
				branch_code = split_sel_branch_arr[0];
			} else {
				branch_code = sel_branch_arr[j];
			}
			if (branch_code == branch_code_temp) {
				var state_code = state_code_temp;
				var state_name_temp = getStateName(state_code_temp);
				var state_name = state_name_temp;
				if (state_code_del) {
					state_code = state_code_temp + state_del + state_name_temp;
				}
				if (state_desc_del) {
					state_name = state_code_temp + state_del + state_name_temp;
				}
				var value = "('"+state_name+"', '"+state_code+"')";
				if (!contains_arr(value, state_arr)) {
					state_arr[index++] = value;
				}
			}
		}
	}
	if (is_multiple) {
		state_combo_obj.options[0] = new Option('All','all');		
	} else {
		state_combo_obj.options[0] = new Option('Not Selected','');		
	}
	for (var k = 0; k < state_arr.length; ++k ) { 
		eval( "state_combo_obj.options["+(k+1)+"] = new Option"+state_arr[k] );	
	}	
}

